From e9de71152e0a9794fd6b856db5e954596d59f915 Mon Sep 17 00:00:00 2001 From: Youngjae Cho Date: Tue, 5 Oct 2021 15:44:18 +0900 Subject: [PATCH] Rename booting_done to delayed_init_done Technically, the DEVICE_NOTIFIER_BOOTING_DONE is generated on receiving dbus signal "StartupFinished", not "BootingDone". Therefore rename this notifier to DEVICE_NOTIFIER_DELAYED_INIT and booting_done() callbacks to delayed_init_done(). Change-Id: Ib7c9a38826ce3fdc7eb0b10ee2a62314c8b0dde6 Signed-off-by: Youngjae Cho --- CMakeLists.txt | 2 +- plugins/iot-headed/display/core.c | 14 ++-- plugins/iot-headed/display/key-filter.c | 4 +- plugins/mobile/display/core.c | 14 ++-- plugins/mobile/display/device-interface.c | 6 +- plugins/mobile/display/key-filter.c | 4 +- plugins/tv/display/core.c | 14 ++-- plugins/tv/display/key-filter.c | 4 +- plugins/wearable/display/core.c | 14 ++-- plugins/wearable/display/key-filter.c | 4 +- plugins/wearable/display/powersaver.c | 4 +- src/battery/lowbat-handler.c | 6 +- src/battery/power-supply.c | 12 ++-- src/core/delayed-init-notifier.c | 103 ++++++++++++++++++++++++++ src/core/late-booting-done-notifier.c | 115 ------------------------------ src/core/main.c | 2 +- src/cpu/pmqos.c | 6 +- src/display/auto-brightness.c | 6 +- src/extcon/extcon.c | 12 ++-- src/power/boot.c | 14 ++-- src/power/boot.h | 4 +- src/power/power-handler.c | 6 +- src/shared/device-notifier.c | 3 +- src/shared/device-notifier.h | 3 +- src/thermal/thermal.c | 6 +- src/touchscreen/sensitivity.c | 6 +- src/touchscreen/touchscreen.c | 8 +-- src/tzip/tzip.c | 6 +- src/usbhost/usb-host.c | 6 +- 29 files changed, 197 insertions(+), 211 deletions(-) create mode 100644 src/core/delayed-init-notifier.c delete mode 100644 src/core/late-booting-done-notifier.c diff --git a/CMakeLists.txt b/CMakeLists.txt index d900646..0aef649 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,7 +66,7 @@ SET(VERSION 0.1.0) SET(SRCS src/apps/apps.c src/control/control.c - src/core/late-booting-done-notifier.c + src/core/delayed-init-notifier.c src/core/devices.c src/core/event-handler.c src/core/execute.c diff --git a/plugins/iot-headed/display/core.c b/plugins/iot-headed/display/core.c index c4e6f18..f462b17 100644 --- a/plugins/iot-headed/display/core.c +++ b/plugins/iot-headed/display/core.c @@ -164,7 +164,7 @@ static int trans_table[S_END][EVENT_END] = { #define S_COVER_TIMEOUT 8000 #define GET_HOLDKEY_BLOCK_STATE(x) ((x >> SHIFT_LOCK_FLAG) & HOLD_KEY_BLOCK_BIT) -#define BOOTING_DONE_WATING_TIME 60000 /* 1 minute */ +#define DELAYED_INIT_WATING_TIME 60000 /* 1 minute */ #define LOCK_SCREEN_WATING_TIME 300 /* 0.3 second */ #define LONG_PRESS_INTERVAL 2 /* 2 seconds */ @@ -1926,7 +1926,7 @@ void reset_lcd_timeout(GDBusConnection *conn, states[get_pm_cur_state()].trans(EVENT_INPUT); } -static int booting_done(void *data) +static int delayed_init_done(void *data) { static bool done = false; @@ -1966,7 +1966,7 @@ static int battery_health_changed(void *data) return 0; } -static gboolean delayed_init_dpms(gpointer data) +static gboolean delayed_init_done_dpms(gpointer data) { int timeout; @@ -1999,7 +1999,7 @@ static gboolean delayed_init_dpms(gpointer data) static void add_timer_for_init_dpms(void) { - guint id = g_timeout_add(500/* milliseconds */, delayed_init_dpms, NULL); + guint id = g_timeout_add(500/* milliseconds */, delayed_init_done_dpms, NULL); if (id == 0) _E("Failed to add init_dpms timeout."); } @@ -2107,7 +2107,7 @@ static void display_init(void *data) register_kernel_uevent_control(&lcd_uevent_ops); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_APPLICATION_BACKGROUND, display_app_background); register_notifier(DEVICE_NOTIFIER_APPLICATION_FOREGROUND, display_app_foreground); register_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated); @@ -2190,7 +2190,7 @@ static void display_init(void *data) */ if (disp_plgn->pm_lock_internal) disp_plgn->pm_lock_internal(INTERNAL_LOCK_BOOTING, LCD_OFF, - STAY_CUR_STATE, BOOTING_DONE_WATING_TIME); + STAY_CUR_STATE, DELAYED_INIT_WATING_TIME); /* Initial display state right after the booting done */ if (is_lcdon_blocked()) @@ -2249,7 +2249,7 @@ static void display_exit(void *data) exit_sysfs(); break; case INIT_POLL: - unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_BACKGROUND, display_app_background); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_FOREGROUND, display_app_foreground); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated); diff --git a/plugins/iot-headed/display/key-filter.c b/plugins/iot-headed/display/key-filter.c index ccfb22f..2dbfe2a 100644 --- a/plugins/iot-headed/display/key-filter.c +++ b/plugins/iot-headed/display/key-filter.c @@ -728,7 +728,7 @@ static int check_key_filter(void *data, int fd) return 0; } -static int booting_done_cb(void *data) +static int delayed_init_done(void *data) { booting_check = 0; @@ -766,7 +766,7 @@ static void keyfilter_init(void) touchled = find_device(TOUCHLED_NAME); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done_cb); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_BEZEL_WAKEUP, bezel_wakeup_cb); } diff --git a/plugins/mobile/display/core.c b/plugins/mobile/display/core.c index 62b1a9a..19d63dc 100644 --- a/plugins/mobile/display/core.c +++ b/plugins/mobile/display/core.c @@ -166,7 +166,7 @@ static int trans_table[S_END][EVENT_END] = { #define S_COVER_TIMEOUT 8000 #define GET_HOLDKEY_BLOCK_STATE(x) ((x >> SHIFT_LOCK_FLAG) & HOLD_KEY_BLOCK_BIT) -#define BOOTING_DONE_WATING_TIME 60000 /* 1 minute */ +#define DELAYED_INIT_WATING_TIME 60000 /* 1 minute */ #define LOCK_SCREEN_WATING_TIME 300 /* 0.3 second */ #define LONG_PRESS_INTERVAL 400 /* 0.4 seconds */ @@ -1936,7 +1936,7 @@ void reset_lcd_timeout(GDBusConnection *conn, states[get_pm_cur_state()].trans(EVENT_INPUT); } -static int booting_done(void *data) +static int delayed_init_done(void *data) { static bool done = false; @@ -1976,7 +1976,7 @@ static int battery_health_changed(void *data) return 0; } -static gboolean delayed_init_dpms(gpointer data) +static gboolean delayed_init_done_dpms(gpointer data) { int timeout; @@ -2009,7 +2009,7 @@ static gboolean delayed_init_dpms(gpointer data) static void add_timer_for_init_dpms(void) { - guint id = g_timeout_add(500/* milliseconds */, delayed_init_dpms, NULL); + guint id = g_timeout_add(500/* milliseconds */, delayed_init_done_dpms, NULL); if (id == 0) _E("Failed to add init_dpms timeout."); } @@ -2113,7 +2113,7 @@ static void display_init(void *data) register_kernel_uevent_control(&lcd_uevent_ops); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_APPLICATION_BACKGROUND, display_app_background); register_notifier(DEVICE_NOTIFIER_APPLICATION_FOREGROUND, display_app_foreground); register_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated); @@ -2196,7 +2196,7 @@ static void display_init(void *data) */ if (disp_plgn->pm_lock_internal) disp_plgn->pm_lock_internal(INTERNAL_LOCK_BOOTING, LCD_OFF, - STAY_CUR_STATE, BOOTING_DONE_WATING_TIME); + STAY_CUR_STATE, DELAYED_INIT_WATING_TIME); /* Initial display state right after the booting done */ if (is_lcdon_blocked()) @@ -2255,7 +2255,7 @@ static void display_exit(void *data) exit_sysfs(); break; case INIT_POLL: - unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_BACKGROUND, display_app_background); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_FOREGROUND, display_app_foreground); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated); diff --git a/plugins/mobile/display/device-interface.c b/plugins/mobile/display/device-interface.c index ba2b4e7..bb328df 100644 --- a/plugins/mobile/display/device-interface.c +++ b/plugins/mobile/display/device-interface.c @@ -801,7 +801,7 @@ int display_service_free(void) return hal_device_display_put_backend(); } -static int booting_done(void *data) +static int delayed_init_done(void *data) { static int done = false; @@ -816,7 +816,7 @@ static int booting_done(void *data) int is_lcdon_blocked(void) { /* block lcdon until booting done in silent boot mode */ - if (silent_boot && !booting_done(NULL)) + if (silent_boot && !delayed_init_done(NULL)) return LCDON_BLOCK_DURING_SILENT_BOOT; return LCDON_BLOCK_NONE; @@ -825,7 +825,7 @@ int is_lcdon_blocked(void) int init_sysfs(unsigned int flags) { register_notifier(DEVICE_NOTIFIER_VITAL_STATE, vital_state_changed); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); return 0; } diff --git a/plugins/mobile/display/key-filter.c b/plugins/mobile/display/key-filter.c index 2054adb..13bc8a6 100644 --- a/plugins/mobile/display/key-filter.c +++ b/plugins/mobile/display/key-filter.c @@ -754,7 +754,7 @@ static int check_key_filter(void *data, int fd) return 0; } -static int booting_done_cb(void *data) +static int delayed_init_done(void *data) { booting_check = 0; @@ -792,7 +792,7 @@ static void keyfilter_init(void) touchled = find_device(TOUCHLED_NAME); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done_cb); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_BEZEL_WAKEUP, bezel_wakeup_cb); } diff --git a/plugins/tv/display/core.c b/plugins/tv/display/core.c index 21af9f5..b55dea3 100644 --- a/plugins/tv/display/core.c +++ b/plugins/tv/display/core.c @@ -164,7 +164,7 @@ static int trans_table[S_END][EVENT_END] = { #define S_COVER_TIMEOUT 8000 #define GET_HOLDKEY_BLOCK_STATE(x) ((x >> SHIFT_LOCK_FLAG) & HOLD_KEY_BLOCK_BIT) -#define BOOTING_DONE_WATING_TIME 60000 /* 1 minute */ +#define DELAYED_INIT_WATING_TIME 60000 /* 1 minute */ #define LOCK_SCREEN_WATING_TIME 300 /* 0.3 second */ #define LONG_PRESS_INTERVAL 2 /* 2 seconds */ @@ -1926,7 +1926,7 @@ void reset_lcd_timeout(GDBusConnection *conn, states[get_pm_cur_state()].trans(EVENT_INPUT); } -static int booting_done(void *data) +static int delayed_init_done(void *data) { static bool done = false; @@ -1966,7 +1966,7 @@ static int battery_health_changed(void *data) return 0; } -static gboolean delayed_init_dpms(gpointer data) +static gboolean delayed_init_done_dpms(gpointer data) { int timeout; @@ -1999,7 +1999,7 @@ static gboolean delayed_init_dpms(gpointer data) static void add_timer_for_init_dpms(void) { - guint id = g_timeout_add(500/* milliseconds */, delayed_init_dpms, NULL); + guint id = g_timeout_add(500/* milliseconds */, delayed_init_done_dpms, NULL); if (id == 0) _E("Failed to add init_dpms timeout."); } @@ -2104,7 +2104,7 @@ static void display_init(void *data) register_kernel_uevent_control(&lcd_uevent_ops); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_APPLICATION_BACKGROUND, display_app_background); register_notifier(DEVICE_NOTIFIER_APPLICATION_FOREGROUND, display_app_foreground); register_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated); @@ -2187,7 +2187,7 @@ static void display_init(void *data) */ if (disp_plgn->pm_lock_internal) disp_plgn->pm_lock_internal(INTERNAL_LOCK_BOOTING, LCD_OFF, - STAY_CUR_STATE, BOOTING_DONE_WATING_TIME); + STAY_CUR_STATE, DELAYED_INIT_WATING_TIME); /* Initial display state right after the booting done */ if (is_lcdon_blocked()) @@ -2246,7 +2246,7 @@ static void display_exit(void *data) exit_sysfs(); break; case INIT_POLL: - unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_BACKGROUND, display_app_background); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_FOREGROUND, display_app_foreground); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated); diff --git a/plugins/tv/display/key-filter.c b/plugins/tv/display/key-filter.c index 33214b1..1031fa7 100644 --- a/plugins/tv/display/key-filter.c +++ b/plugins/tv/display/key-filter.c @@ -722,7 +722,7 @@ static int check_key_filter(void *data, int fd) return 0; } -static int booting_done_cb(void *data) +static int delayed_init_done(void *data) { booting_check = 0; @@ -760,7 +760,7 @@ static void keyfilter_init(void) touchled = find_device(TOUCHLED_NAME); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done_cb); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_BEZEL_WAKEUP, bezel_wakeup_cb); } diff --git a/plugins/wearable/display/core.c b/plugins/wearable/display/core.c index 8d27e91..268fa62 100644 --- a/plugins/wearable/display/core.c +++ b/plugins/wearable/display/core.c @@ -172,7 +172,7 @@ static int trans_table[S_END][EVENT_END] = { #define S_COVER_TIMEOUT 8000 #define GET_HOLDKEY_BLOCK_STATE(x) ((x >> SHIFT_LOCK_FLAG) & HOLD_KEY_BLOCK_BIT) -#define BOOTING_DONE_WATING_TIME 60000 /* 1 minute */ +#define DELAYED_INIT_WATING_TIME 60000 /* 1 minute */ #define LOCK_SCREEN_WATING_TIME 300 /* 0.3 second */ #define LONG_PRESS_INTERVAL 500 /* 0.5 seconds */ @@ -2198,7 +2198,7 @@ void reset_lcd_timeout(GDBusConnection *conn, states[get_pm_cur_state()].trans(EVENT_INPUT); } -static int booting_done(void *data) +static int delayed_init_done(void *data) { static bool done = false; @@ -2259,7 +2259,7 @@ static int powerlock_load_config(struct parse_result *result, void *user_data) return 0; } -static gboolean delayed_init_dpms(gpointer data) +static gboolean delayed_init_done_dpms(gpointer data) { int timeout; @@ -2292,7 +2292,7 @@ static gboolean delayed_init_dpms(gpointer data) static void add_timer_for_init_dpms(void) { - guint id = g_timeout_add(500/* milliseconds */, delayed_init_dpms, NULL); + guint id = g_timeout_add(500/* milliseconds */, delayed_init_done_dpms, NULL); if (id == 0) _E("Failed to add init_dpms timeout."); } @@ -2434,7 +2434,7 @@ static void display_init(void *data) register_kernel_uevent_control(&lcd_uevent_ops); register_kernel_uevent_control(&sec_dsim_uevent_ops); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_APPLICATION_BACKGROUND, display_app_background); register_notifier(DEVICE_NOTIFIER_APPLICATION_FOREGROUND, display_app_foreground); register_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated); @@ -2517,7 +2517,7 @@ static void display_init(void *data) */ if (disp_plgn->pm_lock_internal) disp_plgn->pm_lock_internal(INTERNAL_LOCK_BOOTING, LCD_OFF, - STAY_CUR_STATE, BOOTING_DONE_WATING_TIME); + STAY_CUR_STATE, DELAYED_INIT_WATING_TIME); /* Initial display state right after the booting done */ if (is_lcdon_blocked()) @@ -2577,7 +2577,7 @@ static void display_exit(void *data) exit_sysfs(); break; case INIT_POLL: - unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_BACKGROUND, display_app_background); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_FOREGROUND, display_app_foreground); unregister_notifier(DEVICE_NOTIFIER_APPLICATION_TERMINATED, display_app_terminated); diff --git a/plugins/wearable/display/key-filter.c b/plugins/wearable/display/key-filter.c index 5b1cf9d..21bdd95 100644 --- a/plugins/wearable/display/key-filter.c +++ b/plugins/wearable/display/key-filter.c @@ -673,7 +673,7 @@ static int check_key_filter(void *data, int fd) return 0; } -static int booting_done_cb(void *data) +static int delayed_init_done(void *data) { booting_check = 0; @@ -709,7 +709,7 @@ static void keyfilter_init(void) display_add_actor(&display_powerkey_actor); display_add_actor(&display_menukey_actor); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done_cb); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_BEZEL_WAKEUP, bezel_wakeup_cb); } diff --git a/plugins/wearable/display/powersaver.c b/plugins/wearable/display/powersaver.c index 87d0d8a..56c3391 100644 --- a/plugins/wearable/display/powersaver.c +++ b/plugins/wearable/display/powersaver.c @@ -86,7 +86,7 @@ static void powersaver_status_changed(keynode_t *key_nodes, void *data) _E("Failed to update powersaver state %d.", ret); } -static int booting_done(void *data) +static int delayed_init_done(void *data) { static int done; int ret, status; @@ -135,7 +135,7 @@ out: static void powersaver_init(void *data) { - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); } static void powersaver_exit(void *data) diff --git a/src/battery/lowbat-handler.c b/src/battery/lowbat-handler.c index e771b44..3b58753 100644 --- a/src/battery/lowbat-handler.c +++ b/src/battery/lowbat-handler.c @@ -162,7 +162,7 @@ static int power_execute(void *data) return ops->execute(data); } -static int booting_done(void *data) +static int delayed_init_done(void *data) { int status; static int done; @@ -237,7 +237,7 @@ int lowbat_popup(int option) direct_launch: _D("Popup value=%s", value); - if (booting_done(NULL)) { + if (delayed_init_done(NULL)) { if (launched_poweroff == 1) { _I("Will be foreced power off."); @@ -717,7 +717,7 @@ static void lowbat_init(void *data) { int ret; - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_POWER_SUPPLY, lowbat_monitor_init); ret = gdbus_add_object(NULL, DEVICED_PATH_BATTERY, &dbus_interface); diff --git a/src/battery/power-supply.c b/src/battery/power-supply.c index 9537559..4e64746 100644 --- a/src/battery/power-supply.c +++ b/src/battery/power-supply.c @@ -105,7 +105,7 @@ bool battery_initialized; bool battery_do_not_disturb(void); int battery_pm_change_internal(int pid, int s_bits); -static int booting_done(void *data); +static int delayed_init_done(void *data); static void update_health(enum battery_noti_status status); static bool battery_dev_available = false; static int load_uevent(struct parse_result *result, void *user_data); @@ -914,7 +914,7 @@ static void uevent_power_handler(struct udev_device *dev) battery_initialized = true; - ret_val = booting_done(NULL); + ret_val = delayed_init_done(NULL); if (ret_val) { if (battery.online > POWER_SUPPLY_TYPE_BATTERY) power_supply_noti(DEVICE_NOTI_BATT_CHARGE, DEVICE_NOTI_ON); @@ -1013,7 +1013,7 @@ static void battery_changed(struct battery_info *info, void *data) if (ret_val != 1) return; - ret_val = booting_done(NULL); + ret_val = delayed_init_done(NULL); if (ret_val) { /* If the same notification is requested repeatedly, it is ignored by power_supply_noti(). * A notification will be triggered only when charge_status changes between @@ -1490,7 +1490,7 @@ static const dbus_interface_u dbus_interface = { .nr_methods = ARRAY_SIZE(dbus_methods), }; -static int booting_done(void *data) +static int delayed_init_done(void *data) { static int done; device_notifier_state_e state = DEVICE_NOTIFIER_STATE_START; @@ -1513,7 +1513,7 @@ static int booting_done(void *data) CHARGE_MISC_EVENT_SIGNAL, battery.misc, CHARGE_HEALTH_SIGNAL, battery.health, battery.health_s); - unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); return done; } @@ -1695,7 +1695,7 @@ static void power_supply_init(void *data) /* process check battery timer until booting done */ power_supply_timer_start(); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_EVENT_HANDLER, event_handler_state_changed); ret_dbus = gdbus_add_object(NULL, DEVICED_PATH_BATTERY, &dbus_interface); diff --git a/src/core/delayed-init-notifier.c b/src/core/delayed-init-notifier.c new file mode 100644 index 0000000..53a86d1 --- /dev/null +++ b/src/core/delayed-init-notifier.c @@ -0,0 +1,103 @@ +/* + * deviced + * + * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "log.h" +#include "shared/device-notifier.h" +#include "shared/common.h" +#include "core/devices.h" +#include +#include + +static guint delayed_init_timer; + +#define DELAYED_INIT_WAIT_TIME 30 /* second */ +#define DEFAULT_DELAYED_INIT_VALUE (guint)0x0DEF0DEF + +static void delayed_init_stop(void) +{ + if (delayed_init_timer == 0 || delayed_init_timer == DEFAULT_DELAYED_INIT_VALUE) + return; + + g_source_remove(delayed_init_timer); + delayed_init_timer = 0; +} + +static int delayed_init_done(void *data) +{ + static int done; + + if (data == NULL) + goto out; + + done = *(int *)data; + if (delayed_init_timer == 0) + return done; + delayed_init_stop(); +out: + return done; +} + +static gboolean delayed_init_timer_cb(void *data) +{ + int done; + + delayed_init_stop(); + delayed_init_timer = 0; + + done = delayed_init_done(NULL); + if (done) + return G_SOURCE_REMOVE; + + _I("delayed init"); + + done = 1; + device_notify_once(DEVICE_NOTIFIER_DELAYED_INIT, (void *)&done); + + return G_SOURCE_REMOVE; +} + +static void delayed_init_done_notifier_init(void *data) +{ + int ret; + + ret = check_systemd_active(); + if (ret == TRUE) { + _I("restart booting done"); + return; + } + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); + delayed_init_timer = g_timeout_add_seconds(DELAYED_INIT_WAIT_TIME, + delayed_init_timer_cb, NULL); + + if (!delayed_init_timer) + delayed_init_timer = DEFAULT_DELAYED_INIT_VALUE; +} + +static void delayed_init_done_notifier_exit(void *data) +{ + +} + +static const struct device_ops notifier_device_ops = { + DECLARE_NAME_LEN("delayed-init-notifier"), + .init = delayed_init_done_notifier_init, + .exit = delayed_init_done_notifier_exit, +}; + +DEVICE_OPS_REGISTER(¬ifier_device_ops) diff --git a/src/core/late-booting-done-notifier.c b/src/core/late-booting-done-notifier.c deleted file mode 100644 index 36f882a..0000000 --- a/src/core/late-booting-done-notifier.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * deviced - * - * Copyright (c) 2012 - 2013 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - -#include "log.h" -#include "shared/device-notifier.h" -#include "shared/common.h" -#include "core/devices.h" -#include -#include - -static guint late_init_timer; - -#define LATE_INIT_WAIT_TIME 30 /* second */ -#define DEFAULT_LATE_INIT_VALUE (guint)0x0DEF0DEF - -static void late_init_stop(void) -{ - if (late_init_timer == 0 || late_init_timer == DEFAULT_LATE_INIT_VALUE) - return; - - g_source_remove(late_init_timer); - late_init_timer = 0; -} - -static int booting_done(void *data) -{ - static int done; - - if (data == NULL) - goto out; - - done = *(int *)data; - if (late_init_timer == 0) - return done; - late_init_stop(); -out: - return done; -} - -static int early_booting_done(void *data) -{ - static int done; - - if (data == NULL) - goto out; - - done = *(int *)data; -out: - return done; -} - -static gboolean late_init_timer_cb(void *data) -{ - int done; - - late_init_stop(); - done = early_booting_done(NULL); - if (!done) - device_notify(DEVICE_NOTIFIER_EARLY_BOOTING_DONE, (void *)&done); - done = booting_done(NULL); - late_init_timer = 0; - if (done) - return G_SOURCE_REMOVE; - _I("late booting done"); - done = TRUE; - device_notify_once(DEVICE_NOTIFIER_BOOTING_DONE, (void *)&done); - return G_SOURCE_REMOVE; -} - -static void late_booting_done_notifier_init(void *data) -{ - int ret; - - ret = check_systemd_active(); - if (ret == TRUE) { - _I("restart booting done"); - return; - } - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); - register_notifier(DEVICE_NOTIFIER_EARLY_BOOTING_DONE, early_booting_done); - late_init_timer = g_timeout_add_seconds(LATE_INIT_WAIT_TIME, - late_init_timer_cb, NULL); - - if (!late_init_timer) - late_init_timer = DEFAULT_LATE_INIT_VALUE; -} - -static void late_booting_done_notifier_exit(void *data) -{ - -} - -static const struct device_ops notifier_device_ops = { - DECLARE_NAME_LEN("late-booting-done-notifier"), - .init = late_booting_done_notifier_init, - .exit = late_booting_done_notifier_exit, -}; - -DEVICE_OPS_REGISTER(¬ifier_device_ops) diff --git a/src/core/main.c b/src/core/main.c index 24968d9..5b3862c 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -80,7 +80,7 @@ static void deviced_dbus_name_acquired(GDBusConnection *connection, const gchar if (ret == 1) { /* Restarted: deviced was terminated */ _I("Notify relaunch."); - device_notify_once(DEVICE_NOTIFIER_BOOTING_DONE, &ret); + device_notify_once(DEVICE_NOTIFIER_DELAYED_INIT, &ret); } _I("sd_notify(READY=1)"); diff --git a/src/cpu/pmqos.c b/src/cpu/pmqos.c index a53c73c..ad20456 100644 --- a/src/cpu/pmqos.c +++ b/src/cpu/pmqos.c @@ -204,7 +204,7 @@ static const dbus_interface_u dbus_interface = { .nr_methods = ARRAY_SIZE(dbus_methods), }; -static int booting_done(void *data) +static int delayed_init_done(void *data) { static int done; int ret = 0; @@ -243,13 +243,13 @@ static void pmqos_init(void *data) if (ret < 0) _E("Failed to init dbus method: %d", ret); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); } static void pmqos_exit(void *data) { /* unregister notifier for each event */ - unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); unregister_notifier(DEVICE_NOTIFIER_CPU_BOOST_LOWBAT, pmqos_lowbat); unregister_notifier(DEVICE_NOTIFIER_CPU_BOOST_POWEROFF, pmqos_poweroff); } diff --git a/src/display/auto-brightness.c b/src/display/auto-brightness.c index 2128ab0..9b00ecf 100644 --- a/src/display/auto-brightness.c +++ b/src/display/auto-brightness.c @@ -628,7 +628,7 @@ static int lcd_changed_cb(void *data) return 0; } -static int booting_done_cb(void *data) +static int delayed_init_done(void *data) { int state; @@ -663,7 +663,7 @@ static void auto_brightness_init(void *data) display_info.reset_autobrightness_min = reset_autobrightness_min; register_notifier(DEVICE_NOTIFIER_LCD, lcd_changed_cb); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done_cb); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); } static void auto_brightness_exit(void *data) @@ -671,7 +671,7 @@ static void auto_brightness_exit(void *data) exit_lsensor(); unregister_notifier(DEVICE_NOTIFIER_LCD, lcd_changed_cb); - unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done_cb); + unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); } static const struct display_ops display_autobrightness_ops = { diff --git a/src/extcon/extcon.c b/src/extcon/extcon.c index 46deb7e..d0accfd 100644 --- a/src/extcon/extcon.c +++ b/src/extcon/extcon.c @@ -41,7 +41,7 @@ static GList *extcon_list; static bool extcon_dev_available = false; static void extcon_deferred_init(void); -static int booting_done(void *data); +static int delayed_init_done(void *data); void add_extcon(struct extcon_ops *dev) { @@ -306,7 +306,7 @@ static GVariant * dbus_get_extcon_status(GDBusConnection *conn, char *str; int ret; - if (!booting_done(NULL)) + if (!delayed_init_done(NULL)) extcon_deferred_init(); g_variant_get(param, "(s)", &str); @@ -333,7 +333,7 @@ static GVariant *dbus_enable_device(GDBusConnection *conn, char *device; int ret; - if (!booting_done(NULL)) + if (!delayed_init_done(NULL)) extcon_deferred_init(); g_variant_get(param, "(s)", &device); @@ -351,7 +351,7 @@ static GVariant *dbus_disable_device(GDBusConnection *conn, char *device; int ret; - if (!booting_done(NULL)) + if (!delayed_init_done(NULL)) extcon_deferred_init(); g_variant_get(param, "(s)", &device); @@ -506,7 +506,7 @@ static void extcon_deferred_init(void) initialized = true; } -static int booting_done(void *data) +static int delayed_init_done(void *data) { static int done; @@ -532,7 +532,7 @@ static void extcon_init(void *data) if (retval < 0) _E("Failed to init dbus method: %d", retval); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); } static void extcon_exit(void *data) diff --git a/src/power/boot.c b/src/power/boot.c index 458c79a..a819fed 100644 --- a/src/power/boot.c +++ b/src/power/boot.c @@ -37,13 +37,13 @@ static struct display_plugin *disp_plgn; static guint sig_id[2] = {0, 0}; -void remove_booting_done_handler(void *data) +void remove_delayed_init_done_handler(void *data) { gdbus_signal_unsubscribe(NULL, sig_id[0]); gdbus_signal_unsubscribe(NULL, sig_id[1]); } -static void booting_done_received(GDBusConnection *conn, +static void delayed_init_done_received(GDBusConnection *conn, const gchar *sender, const gchar *path, const gchar *iface, @@ -64,7 +64,7 @@ static void booting_done_received(GDBusConnection *conn, return; } CRITICAL_LOG("System session is ready."); - device_notify_once(DEVICE_NOTIFIER_BOOTING_DONE, &system_done); + device_notify_once(DEVICE_NOTIFIER_DELAYED_INIT, &system_done); } else if (strcmp(name, SYSTEMD_DBUS_SIGNAL_USER_STARTUP_FINISHED) == 0) { if (user_done) @@ -76,7 +76,7 @@ static void booting_done_received(GDBusConnection *conn, if (!system_done || !user_done) return; - remove_booting_done_handler(NULL); + remove_delayed_init_done_handler(NULL); _I("Real booting done. Unlock LCD_OFF."); if (disp_plgn->pm_unlock_internal) @@ -87,7 +87,7 @@ static void booting_done_received(GDBusConnection *conn, doze_init(); } -void add_booting_done_handler(void *data) +void add_delayed_init_done_handler(void *data) { /* System Session is loaded completely */ /*ret = */ @@ -95,7 +95,7 @@ void add_booting_done_handler(void *data) SYSTEMD_DBUS_PATH, SYSTEMD_DBUS_IFACE_MANAGER, SYSTEMD_DBUS_SIGNAL_SYSTEM_STARTUP_FINISHED, - booting_done_received, + delayed_init_done_received, NULL, NULL); if (sig_id[0] <= 0) @@ -106,7 +106,7 @@ void add_booting_done_handler(void *data) SYSTEMD_DBUS_PATH, SYSTEMD_DBUS_IFACE_MANAGER, SYSTEMD_DBUS_SIGNAL_USER_STARTUP_FINISHED, - booting_done_received, + delayed_init_done_received, NULL, NULL); if (sig_id[1] <= 0) diff --git a/src/power/boot.h b/src/power/boot.h index aab7cc1..a5d5b7f 100644 --- a/src/power/boot.h +++ b/src/power/boot.h @@ -19,8 +19,8 @@ #ifndef __DEVICED_BOOT_H__ #define __DEVICED_BOOT_H__ -void add_booting_done_handler(void *data); -void remove_booting_done_handler(void *data); +void add_delayed_init_done_handler(void *data); +void remove_delayed_init_done_handler(void *data); extern int silent_boot; diff --git a/src/power/power-handler.c b/src/power/power-handler.c index 2844825..6eed091 100644 --- a/src/power/power-handler.c +++ b/src/power/power-handler.c @@ -749,7 +749,7 @@ static int load_config(struct parse_result *result, void *user_data) return 0; } -static int booting_done(void *data) +static int delayed_init_done(void *data) { static int done; @@ -770,9 +770,9 @@ static void power_init(void *data) if (ret_val < 0) _E("Failed to init dbus method: %d", ret_val); - add_booting_done_handler(NULL); + add_delayed_init_done_handler(NULL); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); add_poweroff_option(POWEROFF_TYPE_POWEROFF, NULL); add_poweroff_option(POWEROFF_TYPE_RESTART, NULL); diff --git a/src/shared/device-notifier.c b/src/shared/device-notifier.c index e835a9c..b755d37 100644 --- a/src/shared/device-notifier.c +++ b/src/shared/device-notifier.c @@ -43,7 +43,7 @@ static guint idl; static const char *device_notifier_type_str[DEVICE_NOTIFIER_MAX] = { NOTIFY_STR(DEVICE_NOTIFIER_DAEMON_RESTARTED), - NOTIFY_STR(DEVICE_NOTIFIER_BOOTING_DONE), + NOTIFY_STR(DEVICE_NOTIFIER_DELAYED_INIT), NOTIFY_STR(DEVICE_NOTIFIER_LCD), NOTIFY_STR(DEVICE_NOTIFIER_LCD_OFF), NOTIFY_STR(DEVICE_NOTIFIER_LOWBAT), @@ -64,7 +64,6 @@ static const char *device_notifier_type_str[DEVICE_NOTIFIER_MAX] = { NOTIFY_STR(DEVICE_NOTIFIER_USB_DEBUG_MODE), NOTIFY_STR(DEVICE_NOTIFIER_USB_TETHERING_MODE), NOTIFY_STR(DEVICE_NOTIFIER_EVENT_HANDLER), - NOTIFY_STR(DEVICE_NOTIFIER_EARLY_BOOTING_DONE), NOTIFY_STR(DEVICE_NOTIFIER_PMQOS), NOTIFY_STR(DEVICE_NOTIFIER_PMQOS_ULTRAPOWERSAVING), NOTIFY_STR(DEVICE_NOTIFIER_PMQOS_POWERSAVING), diff --git a/src/shared/device-notifier.h b/src/shared/device-notifier.h index 24d6350..ba597b1 100644 --- a/src/shared/device-notifier.h +++ b/src/shared/device-notifier.h @@ -22,7 +22,7 @@ enum device_notifier_type { DEVICE_NOTIFIER_DAEMON_RESTARTED, - DEVICE_NOTIFIER_BOOTING_DONE, + DEVICE_NOTIFIER_DELAYED_INIT, DEVICE_NOTIFIER_LCD, DEVICE_NOTIFIER_LCD_OFF, DEVICE_NOTIFIER_LCD_OFF_COMPLETE, @@ -48,7 +48,6 @@ enum device_notifier_type { DEVICE_NOTIFIER_CPU_BOOST_LOWBAT, DEVICE_NOTIFIER_CPU_BOOST_POWEROFF, /* Experimental for Specific device - contact to deviced owner */ - DEVICE_NOTIFIER_EARLY_BOOTING_DONE, DEVICE_NOTIFIER_PMQOS, DEVICE_NOTIFIER_PMQOS_ULTRAPOWERSAVING, DEVICE_NOTIFIER_PMQOS_POWERSAVING, diff --git a/src/thermal/thermal.c b/src/thermal/thermal.c index e3e32d5..e46b190 100644 --- a/src/thermal/thermal.c +++ b/src/thermal/thermal.c @@ -32,7 +32,7 @@ static bool thermal_dev_available = false; -static int booting_done(void *data) +static int delayed_init_done(void *data) { static int done; @@ -85,7 +85,7 @@ static void thermal_init(void *data) { int ret; - ret = register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + ret = register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); if (ret < 0) _E("Failed to register booting done notifier."); @@ -98,7 +98,7 @@ static void thermal_exit(void *data) { int ret; - ret = unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + ret = unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); if (ret < 0) _E("Failed to unregister booting done notifier."); diff --git a/src/touchscreen/sensitivity.c b/src/touchscreen/sensitivity.c index b0e0da4..d724361 100644 --- a/src/touchscreen/sensitivity.c +++ b/src/touchscreen/sensitivity.c @@ -134,7 +134,7 @@ static const dbus_interface_u dbus_interface = { .nr_methods = ARRAY_SIZE(dbus_methods), }; -static int booting_done(void *data) +static int delayed_init_done(void *data) { static int done; int ret; @@ -158,7 +158,7 @@ static int booting_done(void *data) } ret = hal_device_touchscreen_glove_mode_set_state(TOUCHSENSITIVITY_GLOVE_MODE_ON); _I("Change auto touch sensitivity enable: %s", ret ? "fail" : "set"); - unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); out: return done; } @@ -195,7 +195,7 @@ static void sensitivity_init(void *data) if (ret <= 0) _E("Failed to register signal handler: %d", ret); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); } static const struct device_ops sensitivity_device_ops = { diff --git a/src/touchscreen/touchscreen.c b/src/touchscreen/touchscreen.c index bcbe669..6eb899c 100644 --- a/src/touchscreen/touchscreen.c +++ b/src/touchscreen/touchscreen.c @@ -46,7 +46,7 @@ static int powersaving_support = true; static int touchscreen_start(enum device_flags flags); static int touchscreen_stop(enum device_flags flags); -static int booting_done(void *data); +static int delayed_init_done(void *data); static struct display_config *display_conf; static struct _backlight_ops *backlight_ops; @@ -176,7 +176,7 @@ static int touchscreen_start(enum device_flags flags) return 0; /* Do not enable touchscreen during silent boot mode */ - if (silent_boot && !booting_done(NULL)) + if (silent_boot && !delayed_init_done(NULL)) return -ENOTSUP; /* @@ -286,7 +286,7 @@ static const dbus_interface_u dbus_interface = { .nr_methods = ARRAY_SIZE(dbus_methods), }; -static int booting_done(void *data) +static int delayed_init_done(void *data) { static int done = false; @@ -354,7 +354,7 @@ static void touchscreen_init(void *data) if (ret < 0) _E("Failed to init dbus method. (%d)", ret); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); } static const struct device_ops touchscreen_device_ops = { diff --git a/src/tzip/tzip.c b/src/tzip/tzip.c index 6f6a857..94eed6a 100644 --- a/src/tzip/tzip.c +++ b/src/tzip/tzip.c @@ -998,7 +998,7 @@ static const dbus_interface_u dbus_interface = { .nr_methods = ARRAY_SIZE(dbus_methods), }; -static int booting_done(void *data) +static int delayed_init_done(void *data) { /* To reduce the latency of the first Tzip operation, you can apply this optimization. tzip_server_init(); */ @@ -1020,7 +1020,7 @@ static void tzip_init(void *data) tzip_lock_init(); - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); register_notifier(DEVICE_NOTIFIER_POWEROFF, tzip_poweroff); ret = gdbus_add_object(NULL, DEVICED_PATH_TZIP, &dbus_interface); @@ -1036,7 +1036,7 @@ static void tzip_exit(void *data) { _D("tzip_exit"); tzip_server_exit(); - unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); unregister_notifier(DEVICE_NOTIFIER_POWEROFF, tzip_poweroff); tzip_lock_deinit(); diff --git a/src/usbhost/usb-host.c b/src/usbhost/usb-host.c index f8a297f..367a5b4 100644 --- a/src/usbhost/usb-host.c +++ b/src/usbhost/usb-host.c @@ -1115,7 +1115,7 @@ static const dbus_interface_u dbus_interface = { }; -static int booting_done(void *data) +static int delayed_init_done(void *data) { /** * To search the attched usb host device is not an urgent task. @@ -1125,7 +1125,7 @@ static int booting_done(void *data) usbhost_init_from_udev_enumerate(); /* unregister booting done notifier */ - unregister_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + unregister_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); return 0; } @@ -1156,7 +1156,7 @@ static void usbhost_init(void *data) _E("Failed to register dbus interface and method: %d", ret); /* register notifier */ - register_notifier(DEVICE_NOTIFIER_BOOTING_DONE, booting_done); + register_notifier(DEVICE_NOTIFIER_DELAYED_INIT, delayed_init_done); ret = asprintf(&POLICY_FILEPATH, "%s/%s", ROOTPATH, POLICY_FILENAME); if (ret < 0) { -- 2.7.4