From: Youngjae Cho Date: Thu, 9 Feb 2023 04:39:57 +0000 (+0900) Subject: resource-manager: revamp init/exit of resource driver X-Git-Tag: accepted/tizen/unified/20230221.031433~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=77dc6e9f73dffc1638c6d018c16843826cfc961c;p=platform%2Fcore%2Fsystem%2Flibsyscommon.git resource-manager: revamp init/exit of resource driver Change-Id: I24bf3bd1b93bbe53c170522bc039b082191989de Signed-off-by: Youngjae Cho --- diff --git a/src/resource-manager/resource-manager.c b/src/resource-manager/resource-manager.c index 71d1a9d..7167ca2 100644 --- a/src/resource-manager/resource-manager.c +++ b/src/resource-manager/resource-manager.c @@ -1260,31 +1260,32 @@ syscommon_resman_set_resource_privdata(int resource_id, void *priv) return 0; } -void syscommon_resman_init_resource_drivers(void) +static void init_resource_driver(gpointer data, gpointer udata) { - struct syscommon_resman_resource_driver *driver; - int i, ret = 0; - - for (i = 0; i < g_list_length(g_resource_driver_head); i++) { - driver = g_list_nth(g_list_first(g_resource_driver_head), i)->data; + struct syscommon_resman_resource_driver *driver = (struct syscommon_resman_resource_driver *) data; + int ret = 0; - if (driver->ops.init) { - ret = driver->ops.init(); - if (ret < 0) - syscommon_resman_remove_resource_driver(driver); - } + if (driver && driver->ops.init) { + ret = driver->ops.init(); + if (ret < 0) + syscommon_resman_remove_resource_driver(driver); } } -void syscommon_resman_exit_resource_drivers(void) +static void exit_resource_driver(gpointer data, gpointer udata) { - const struct syscommon_resman_resource_driver *driver; - int i; + struct syscommon_resman_resource_driver *driver = (struct syscommon_resman_resource_driver *) data; - for (i = 0; i < g_list_length(g_resource_driver_head); i++) { - driver = g_list_nth(g_list_first(g_resource_driver_head), i)->data; + if (driver && driver->ops.exit) + driver->ops.exit(); +} - if (driver->ops.exit) - driver->ops.exit(); - } +void syscommon_resman_init_resource_drivers(void) +{ + g_list_foreach(g_resource_driver_head, init_resource_driver, NULL); +} + +void syscommon_resman_exit_resource_drivers(void) +{ + g_list_foreach(g_resource_driver_head, exit_resource_driver, NULL); }