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);
}