resource: Operate based on resource id 92/285192/1 accepted/tizen/7.0/unified/20221209.015651
authorYoungjae Cho <y0.cho@samsung.com>
Mon, 7 Nov 2022 07:29:01 +0000 (16:29 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Wed, 7 Dec 2022 08:25:07 +0000 (17:25 +0900)
The resource-manager of libsyscommon has been revamped to work based on
resource id instead of actual instance. Therefore the pass doesn't need
to manage actual resource instance of libsyscommon anymore. Instead, the
only thing to do is managing id of resource instance, which can be used
in any place to which resource instance could have been used.

Change-Id: I5b47eb6ad9b5743fdb4a71f21cfe32af83300957
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
16 files changed:
include/monitor/monitor.h
src/monitor/monitor-command.c
src/monitor/monitor-thread.c
src/monitor/monitor.c
src/monitor/request-handler.c
src/resource/resource-battery.c
src/resource/resource-bus.c
src/resource/resource-cpu.c
src/resource/resource-disk.c
src/resource/resource-display.c
src/resource/resource-gpu.c
src/resource/resource-memory.c
src/resource/resource-network.c
src/resource/resource-process-group.c
src/resource/resource-process.c
src/resource/resource-system.c

index 036fa63..f5d94f0 100644 (file)
 #ifndef __MONITOR_H__
 #define __MONITOR_H__
 
-#include <libsyscommon/resource-manager.h>
+#include <glib.h>
 #include <util/thread.h>
 #include <util/queue.h>
+#include <util/common.h>
 
 #define MONITOR_POLLING_DURATION 100
 
 struct monitor_command {
-       struct syscommon_resman_resource *resource;
+       int resource_id;
        volatile bool done;
        mtx_t lock;
        cnd_t signal;
@@ -49,7 +50,7 @@ void monitor_thread_exit(struct monitor *monitor);
 void monitor_command_wait_done(struct monitor_command *cmd);
 void monitor_command_submit(struct monitor_command *cmd);
 void monitor_command_submit_sync(struct monitor_command *cmd);
-void monitor_command_bind_resource(struct monitor_command *cmd, struct syscommon_resman_resource *res);
+void monitor_command_bind_resource(struct monitor_command *cmd, int resource_id);
 void monitor_command_unbind_resource(struct monitor_command *cmd);
 int monitor_command_init(struct monitor_command **cmd);
 void monitor_command_exit(struct monitor_command *cmd);
index a9894e1..b9b9a08 100644 (file)
@@ -55,24 +55,24 @@ void monitor_command_submit_sync(struct monitor_command *cmd)
        _monitor_command_wait_done(cmd, MONITOR_POLLING_DURATION);
 }
 
-void monitor_command_bind_resource(struct monitor_command *cmd, struct syscommon_resman_resource *res)
+void monitor_command_bind_resource(struct monitor_command *cmd, int resource_id)
 {
-       if (cmd->resource) {
+       if (cmd->resource_id >= 0) {
                _E("resource is already bound\n");
                return;
        }
 
-       cmd->resource = res;
+       cmd->resource_id = resource_id;
 }
 
 void monitor_command_unbind_resource(struct monitor_command *cmd)
 {
-       if (!cmd->resource) {
+       if (cmd->resource_id < 0) {
                _E("resource is not bound yet\n");
                return;
        }
 
-       cmd->resource = NULL;
+       cmd->resource_id = -1;
 }
 
 int monitor_command_init(struct monitor_command **cmd)
@@ -85,6 +85,7 @@ int monitor_command_init(struct monitor_command **cmd)
 
        mtx_init(&new_cmd->lock, mtx_plain);
        cnd_init(&new_cmd->signal);
+       new_cmd->resource_id = -1;
        new_cmd->done = false;
 
        *cmd = new_cmd;
@@ -97,7 +98,7 @@ void monitor_command_exit(struct monitor_command *cmd)
        cnd_destroy(&cmd->signal);
        mtx_destroy(&cmd->lock);
 
-       if (cmd->resource)
+       if (cmd->resource_id >= 0)
                _W("resource is not unbound before destroying request\n");
 
        free(cmd);
index 132e224..55b4bfe 100644 (file)
@@ -19,6 +19,8 @@
 #include <util/log.h>
 #include <monitor/monitor.h>
 
+#include <libsyscommon/resource-manager.h>
+
 thread_local int empty_counter = 0;
 
 static int monitor_func(void *data, void **result)
@@ -38,7 +40,7 @@ new_command:
                return THREAD_RETURN_CONTINUE;
        }
 
-       syscommon_resman_update_resource_attrs(cmd->resource);
+       syscommon_resman_update_resource_attrs(cmd->resource_id);
 
        cmd->done = true;
        smp_wmb();
index 60a2c93..d90237b 100644 (file)
@@ -24,6 +24,8 @@
 #include <util/gdbus-util.h>
 #include <monitor/monitor.h>
 
+#include <libsyscommon/resource-manager.h>
+
 static struct monitor g_monitor;
 static gboolean g_debug_mode;
 
index d503ab6..e31b2c6 100644 (file)
@@ -40,6 +40,7 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/un.h>
+#include <sys/stat.h>
 #include <netinet/in.h>
 #include <sys/time.h>
 #include <assert.h>
@@ -59,13 +60,10 @@ struct request_client {
 
 struct resource_instance {
        int id;
-       struct syscommon_resman_resource *res;
-
        int64_t ts_start;
        int64_t ts_end;
 };
 
-static int g_resource_id;
 static bool g_request_server_run;
 static struct thread *g_server_thread;
 
@@ -89,23 +87,6 @@ get_resource_instance_by_id(struct request_client *client, int resource_id)
        return g_hash_table_lookup(client->resource_table, GINT_TO_POINTER(resource_id));
 }
 
-static struct syscommon_resman_resource *
-get_resource_by_id(struct request_client *client, int resource_id)
-{
-       struct resource_instance *res_inst = get_resource_instance_by_id(client, resource_id);
-
-       res_inst = get_resource_instance_by_id(client, resource_id);
-       if (!res_inst)
-               return NULL;
-
-       return res_inst->res;
-}
-
-static int clear_sign_bit(unsigned int val)
-{
-       return (int)((val << 1) >> 1);
-}
-
 static int handle_request_create_resource(struct request_client *client, char *args)
 {
        struct resource_instance *res_inst;
@@ -126,16 +107,13 @@ static int handle_request_create_resource(struct request_client *client, char *a
         */
        resource_type = atoi(args);
 
-       ret = syscommon_resman_create_resource(&res_inst->res, resource_type);
+       ret = syscommon_resman_create_resource(&res_inst->id, resource_type);
        if (ret < 0) {
                _E("failed to create resource, res:type(%d)\n", resource_type);
                free(res_inst);
                return ret;
        }
 
-       res_inst->id = clear_sign_bit(
-                       (unsigned int)__sync_fetch_and_add(&g_resource_id, 1));
-
        register_resource_to_client(client, res_inst);
 
        return res_inst->id;
@@ -172,7 +150,6 @@ inline __attribute__((always_inline)) int64_t get_time_now(void)
 static int handle_request_update_resource(struct request_client *client, char *args)
 {
        struct resource_instance *res_inst;
-       struct syscommon_resman_resource *res;
        int resource_id;
        int ret;
 
@@ -193,15 +170,13 @@ static int handle_request_update_resource(struct request_client *client, char *a
                return -EINVAL;
        }
 
-       res = res_inst->res;
-
        res_inst->ts_start = get_time_now();
-       ret = syscommon_resman_update_resource_attrs(res);
+       ret = syscommon_resman_update_resource_attrs(resource_id);
        res_inst->ts_end = get_time_now();
        if (ret < 0) {
                res_inst->ts_start = res_inst->ts_end = 0;
                _E("failed to update resource attributes, res:name(%s)id(%d)\n",
-                               syscommon_resman_get_resource_name(res), resource_id);
+                               syscommon_resman_get_resource_name(resource_id), resource_id);
                return ret;
        }
 
@@ -257,13 +232,12 @@ static int handle_request_get_resource_count(struct request_client *client, char
 static void update_resource(gpointer key, gpointer value, gpointer user_data)
 {
        struct resource_instance *res_inst = value;
-       struct syscommon_resman_resource *res = res_inst->res;
        int ret;
 
-       ret = syscommon_resman_update_resource_attrs(res);
+       ret = syscommon_resman_update_resource_attrs(res_inst->id);
        if (ret < 0)
                _E("failed to update resource attributes (name:%s,id:%d)\n",
-                               syscommon_resman_get_resource_name(res), res_inst->id);
+                               syscommon_resman_get_resource_name(res_inst->id), res_inst->id);
 }
 
 
@@ -286,7 +260,6 @@ static int handle_request_update_resource_all(struct request_client *client, cha
 
 static int handle_request_set_resource_attr(struct request_client *client, char *args, int request_type)
 {
-       struct syscommon_resman_resource *res;
        int resource_id, ret;
        u_int64_t interest_masks;
 
@@ -305,30 +278,23 @@ static int handle_request_set_resource_attr(struct request_client *client, char
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                                       client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
        switch (request_type) {
        case REQUEST_SET_RESOURCE_ATTR:
-               ret = syscommon_resman_set_resource_attr_interest(res, interest_masks);
+               ret = syscommon_resman_set_resource_attr_interest(resource_id, interest_masks);
                if (ret < 0)
                        _E("failed to set attribute interest, client(%d) | res:name(%s)id(%d)\n",
                                        client->socket_fd,
-                                       syscommon_resman_get_resource_name(res), resource_id);
+                                       syscommon_resman_get_resource_name(resource_id), resource_id);
                break;
        case REQUEST_UNSET_RESOURCE_ATTR:
-               ret = syscommon_resman_unset_resource_attr_interest(res, interest_masks);
+               ret = syscommon_resman_unset_resource_attr_interest(resource_id, interest_masks);
                if (ret < 0)
                        _E("failed to unset attribute interest, client(%d) | res:name(%s)id(%d)\n",
                                        client->socket_fd,
-                                       syscommon_resman_get_resource_name(res), resource_id);
+                                       syscommon_resman_get_resource_name(resource_id), resource_id);
                break;
        case REQUEST_IS_RESOURCE_ATTR_SET:
-               ret = (int)syscommon_resman_is_resource_attr_interested(res, interest_masks);
+               ret = (int)syscommon_resman_is_resource_attr_interested(resource_id, interest_masks);
                break;
        default:
                return -EINVAL;
@@ -339,7 +305,6 @@ static int handle_request_set_resource_attr(struct request_client *client, char
 
 static int handle_request_set_resource_flag(struct request_client *client, char *args)
 {
-       struct syscommon_resman_resource *res;
        int resource_id, ret;
        u_int64_t flag_mask;
 
@@ -358,18 +323,11 @@ static int handle_request_set_resource_flag(struct request_client *client, char
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                                       client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
-       ret = syscommon_resman_set_resource_flag(res, flag_mask);
+       ret = syscommon_resman_set_resource_flag(resource_id, flag_mask);
        if (ret < 0) {
                _E("failed to set flag to %"PRIu64", client(%d) | res:name(%s)id(%d)\n",
                                        flag_mask, client->socket_fd,
-                                       syscommon_resman_get_resource_name(res), resource_id);
+                                       syscommon_resman_get_resource_name(resource_id), resource_id);
                return ret;
        }
 
@@ -378,7 +336,6 @@ static int handle_request_set_resource_flag(struct request_client *client, char
 
 static int handle_request_is_resource_attr_supported(struct request_client *client, char *args, bool *supported)
 {
-       struct resource *res;
        int resource_id;
        u_int64_t attr_id;
 
@@ -397,19 +354,11 @@ static int handle_request_is_resource_attr_supported(struct request_client *clie
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                                       client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
-       return syscommon_resman_is_resource_attr_supported(res, attr_id, supported);
+       return syscommon_resman_is_resource_attr_supported(resource_id, attr_id, supported);
 }
 
 static int handle_request_set_resource_ctrl(struct request_client *client, char *args)
 {
-       struct syscommon_resman_resource *res;
        int resource_id, value, ret;
        u_int64_t ctrl_id;
 
@@ -428,19 +377,12 @@ static int handle_request_set_resource_ctrl(struct request_client *client, char
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                                       client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
-       ret = syscommon_resman_set_resource_control(res, ctrl_id, (void *)(intptr_t)value);
+       ret = syscommon_resman_set_resource_control(resource_id, ctrl_id, (void *)(intptr_t)value);
        if (ret < 0) {
                _E("failed to set resource control, client(%d) | res:name(%s)id(%d) | ctrl:name(%s)id(%"PRId64")val(%d)\n",
                                        client->socket_fd,
-                                       syscommon_resman_get_resource_name(res), resource_id,
-                                       syscommon_resman_get_resource_control_name(res, ctrl_id), ctrl_id, value);
+                                       syscommon_resman_get_resource_name(resource_id), resource_id,
+                                       syscommon_resman_get_resource_control_name(resource_id, ctrl_id), ctrl_id, value);
                return ret;
        }
 
@@ -451,7 +393,6 @@ static int
 handle_request_get_json(struct request_client *client, char *args,
                                 int request_type, char **json_string)
 {
-       struct syscommon_resman_resource *res;
        u_int64_t attr_id;
        int resource_id;
 
@@ -482,18 +423,12 @@ handle_request_get_json(struct request_client *client, char *args,
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, res:id(%d)\n", resource_id);
-               return -EINVAL;
-       }
-
 skip_res:
        switch (request_type) {
        case REQUEST_GET_RESOURCE_JSON:
-               return syscommon_resman_get_resource_attrs_json(res, json_string);
+               return syscommon_resman_get_resource_attrs_json(resource_id, json_string);
        case REQUEST_GET_VALUE_JSON:
-               return syscommon_resman_get_resource_attr_json(res, attr_id, json_string);
+               return syscommon_resman_get_resource_attr_json(resource_id, attr_id, json_string);
        case REQUEST_GET_RESOURCE_LIST_JSON:
                return syscommon_resman_get_resource_list_json(json_string);
        default:
@@ -503,7 +438,6 @@ skip_res:
 
 static int handle_request_get_value_int(struct request_client *client, char *args, int32_t *value)
 {
-       struct syscommon_resman_resource *res;
        int resource_id, ret;
        u_int64_t attr_id;
 
@@ -522,19 +456,12 @@ static int handle_request_get_value_int(struct request_client *client, char *arg
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                                       client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
-       ret = syscommon_resman_get_resource_attr_int(res, attr_id, value);
+       ret = syscommon_resman_get_resource_attr_int(resource_id, attr_id, value);
        if (ret < 0) {
                _E("failed to get int value, client(%d) | res:name(%s)id(%d) | attr:name(%s)id(%"PRId64")\n",
                                client->socket_fd,
-                               syscommon_resman_get_resource_name(res), resource_id,
-                               syscommon_resman_get_resource_attr_name(res, attr_id), attr_id);
+                               syscommon_resman_get_resource_name(resource_id), resource_id,
+                               syscommon_resman_get_resource_attr_name(resource_id, attr_id), attr_id);
                return ret;
        }
 
@@ -543,7 +470,6 @@ static int handle_request_get_value_int(struct request_client *client, char *arg
 
 static int handle_request_get_value_int64(struct request_client *client, char *args, int64_t *value)
 {
-       struct syscommon_resman_resource *res;
        int resource_id, ret;
        u_int64_t attr_id;
 
@@ -562,19 +488,12 @@ static int handle_request_get_value_int64(struct request_client *client, char *a
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                               client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
-       ret = syscommon_resman_get_resource_attr_int64(res, attr_id, value);
+       ret = syscommon_resman_get_resource_attr_int64(resource_id, attr_id, value);
        if (ret < 0) {
                _E("failed to get int64 value, client(%d) | res:name(%s)id(%d) | attr:name(%s)id(%"PRId64")\n",
                                client->socket_fd,
-                               syscommon_resman_get_resource_name(res), resource_id,
-                               syscommon_resman_get_resource_attr_name(res, attr_id), attr_id);
+                               syscommon_resman_get_resource_name(resource_id), resource_id,
+                               syscommon_resman_get_resource_attr_name(resource_id, attr_id), attr_id);
                return ret;
        }
 
@@ -584,7 +503,6 @@ static int handle_request_get_value_int64(struct request_client *client, char *a
 static int
 handle_request_get_value_uint(struct request_client *client, char *args, u_int32_t *value)
 {
-       struct syscommon_resman_resource *res;
        int resource_id, ret;
        u_int64_t attr_id;
 
@@ -603,19 +521,12 @@ handle_request_get_value_uint(struct request_client *client, char *args, u_int32
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                               client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
-       ret = syscommon_resman_get_resource_attr_uint(res, attr_id, value);
+       ret = syscommon_resman_get_resource_attr_uint(resource_id, attr_id, value);
        if (ret < 0) {
                _E("failed to get uint value, client(%d) | res:name(%s)id(%d) | attr:name(%s)id(%"PRId64")\n",
                                client->socket_fd,
-                               syscommon_resman_get_resource_name(res), resource_id,
-                               syscommon_resman_get_resource_attr_name(res, attr_id), attr_id);
+                               syscommon_resman_get_resource_name(resource_id), resource_id,
+                               syscommon_resman_get_resource_attr_name(resource_id, attr_id), attr_id);
                return ret;
        }
 
@@ -625,7 +536,6 @@ handle_request_get_value_uint(struct request_client *client, char *args, u_int32
 static int
 handle_request_get_value_uint64(struct request_client *client, char *args, u_int64_t *value)
 {
-       struct syscommon_resman_resource *res;
        int resource_id, ret;
        u_int64_t attr_id;
 
@@ -644,19 +554,12 @@ handle_request_get_value_uint64(struct request_client *client, char *args, u_int
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                               client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
-       ret = syscommon_resman_get_resource_attr_uint64(res, attr_id, value);
+       ret = syscommon_resman_get_resource_attr_uint64(resource_id, attr_id, value);
        if (ret < 0) {
                _E("failed to get uint64 value, client(%d) | res:name(%s)id(%d) | attr:name(%s)id(%"PRId64")\n",
                                client->socket_fd,
-                               syscommon_resman_get_resource_name(res), resource_id,
-                               syscommon_resman_get_resource_attr_name(res, attr_id), attr_id);
+                               syscommon_resman_get_resource_name(resource_id), resource_id,
+                               syscommon_resman_get_resource_attr_name(resource_id, attr_id), attr_id);
                return ret;
        }
 
@@ -665,7 +568,6 @@ handle_request_get_value_uint64(struct request_client *client, char *args, u_int
 
 static int handle_request_get_value_double(struct request_client *client, char *args, double *value)
 {
-       struct syscommon_resman_resource *res;
        int resource_id, ret;
        u_int64_t attr_id;
 
@@ -684,19 +586,12 @@ static int handle_request_get_value_double(struct request_client *client, char *
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                               client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
-       ret = syscommon_resman_get_resource_attr_double(res, attr_id, value);
+       ret = syscommon_resman_get_resource_attr_double(resource_id, attr_id, value);
        if (ret < 0) {
                _E("failed to get double value,  client(%d) | res:name(%s)id(%d) | attr:name(%s)id(%"PRId64")\n",
                                client->socket_fd,
-                               syscommon_resman_get_resource_name(res), resource_id,
-                               syscommon_resman_get_resource_attr_name(res, attr_id), attr_id);
+                               syscommon_resman_get_resource_name(resource_id), resource_id,
+                               syscommon_resman_get_resource_attr_name(resource_id, attr_id), attr_id);
                return ret;
        }
 
@@ -705,7 +600,6 @@ static int handle_request_get_value_double(struct request_client *client, char *
 
 static int handle_request_get_value_string(struct request_client *client, char *args, char *value)
 {
-       struct syscommon_resman_resource *res;
        int resource_id, ret;
        u_int64_t attr_id;
 
@@ -724,19 +618,12 @@ static int handle_request_get_value_string(struct request_client *client, char *
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                               client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
-       ret = syscommon_resman_get_resource_attr_string(res, attr_id, value);
+       ret = syscommon_resman_get_resource_attr_string(resource_id, attr_id, value);
        if (ret < 0) {
                _E("failed to get string value, client(%d) | res:name(%s)id(%d) | attr:name(%s)id(%"PRId64")\n",
                                client->socket_fd,
-                               syscommon_resman_get_resource_name(res), resource_id,
-                               syscommon_resman_get_resource_attr_name(res, attr_id), attr_id);
+                               syscommon_resman_get_resource_name(resource_id), resource_id,
+                               syscommon_resman_get_resource_attr_name(resource_id, attr_id), attr_id);
                return ret;
        }
 
@@ -746,7 +633,6 @@ static int handle_request_get_value_string(struct request_client *client, char *
 static int
 handle_request_get_value_array(struct request_client *client, char *args, struct syscommon_resman_array_value **arr)
 {
-       struct syscommon_resman_resource *res;
        int resource_id, ret;
        u_int64_t attr_id;
 
@@ -765,19 +651,12 @@ handle_request_get_value_array(struct request_client *client, char *args, struct
                return -EINVAL;
        }
 
-       res = get_resource_by_id(client, resource_id);
-       if (!res) {
-               _E("failed to get resource, client(%d) | res:id(%d)\n",
-                               client->socket_fd, resource_id);
-               return -EINVAL;
-       }
-
-       ret = syscommon_resman_get_resource_attr_array(res, attr_id, arr);
+       ret = syscommon_resman_get_resource_attr_array(resource_id, attr_id, arr);
        if (ret < 0) {
                _E("failed to get array value, client(%d) | (res:name(%s)id(%d) | attr:name(%s)id(%"PRId64")\n",
                                client->socket_fd,
-                               syscommon_resman_get_resource_name(res), resource_id,
-                               syscommon_resman_get_resource_attr_name(res, attr_id), attr_id);
+                               syscommon_resman_get_resource_name(resource_id), resource_id,
+                               syscommon_resman_get_resource_attr_name(resource_id, attr_id), attr_id);
                return ret;
        }
 
@@ -813,7 +692,7 @@ handle_request_get_resource_ts(struct request_client *client, char *args,
         */
        resource_id = atoi(args);
 
-       res_inst = get_resource_by_id(client, resource_id);
+       res_inst = get_resource_instance_by_id(client, resource_id);
        if (!res_inst) {
                _E("failed to get resource, client(%d) | res:id(%d)\n",
                                client->socket_fd, resource_id);
@@ -824,7 +703,7 @@ handle_request_get_resource_ts(struct request_client *client, char *args,
        if (ret < 0) {
                _E("failed to get timestamp value, client(%d) | res:name(%s)id(%d)\n",
                                client->socket_fd,
-                               syscommon_resman_get_resource_name(res_inst->res), resource_id);
+                               syscommon_resman_get_resource_name(res_inst->id), resource_id);
                return ret;
        }
 
@@ -1148,7 +1027,7 @@ static void delete_resource_instance(struct resource_instance *res_inst)
        if (!res_inst)
                return;
 
-       syscommon_resman_delete_resource(res_inst->res);
+       syscommon_resman_delete_resource(res_inst->id);
 
        free(res_inst);
 }
@@ -1290,29 +1169,6 @@ error_out:
        return -EIO;
 }
 
-static void init_resource_id(void)
-{
-       int val;
-       struct timeval tv;
-
-       /*
-        * Initial g_resource_id is set by a combination of
-        * tv_sec and tv_usec values of gettimeofday().
-        * It ensures that PASS assigns a unique resource id
-        * for each create_resource request.
-        *
-        * Even PASS is restarted, a newly initialized value
-        * of g_resource_id reflects the current value of
-        * gettimeofday(). Thus, the uniqueness in resource
-        * id is kept unless the number of created resources
-        * crosses the time consumed (in msecs) before
-        * restarted.
-        */
-       gettimeofday(&tv, NULL);
-       val = tv.tv_sec * 1000 + tv.tv_usec / 1000;
-       g_resource_id = clear_sign_bit(val);
-}
-
 static int request_server_func(void *ctx, void **result)
 {
        struct sockaddr_un unix_address;
@@ -1328,8 +1184,6 @@ static int request_server_func(void *ctx, void **result)
        if (!g_request_server_run)
                return THREAD_RETURN_DONE;
 
-       init_resource_id();
-
        /* 0. initialize server socket */
        ret = init_unix_socket(&server_unix_socket, &unix_address, &unix_addrlen);
        if (ret < 0)
index ecb4554..92752dd 100644 (file)
@@ -31,7 +31,7 @@
 
 #include <resource-monitor/resource-monitor.h>
 
-static int battery_get_info(struct syscommon_resman_resource *res,
+static int battery_get_info(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -39,7 +39,7 @@ static int battery_get_info(struct syscommon_resman_resource *res,
        int ret;
        int *val = (int *)data;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
        switch (attr->id) {
@@ -72,14 +72,14 @@ static int battery_get_info(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int battery_get_status(struct syscommon_resman_resource *res,
+static int battery_get_status(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
        char *buf = (char *)data;
        int ret;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
        ret = sys_get_str("/sys/class/power_supply/battery/status", buf);
index b32bd5f..8d3c63a 100644 (file)
@@ -40,7 +40,7 @@ struct bus_context {
        int index;
 };
 
-static int bus_get_value_from_hal_power(struct syscommon_resman_resource *res,
+static int bus_get_value_from_hal_power(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -49,20 +49,20 @@ static int bus_get_value_from_hal_power(struct syscommon_resman_resource *res,
        int *val = (int *)data;
        int _val;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("%s: BUS_CTRL_DEVICE_ID is not yet initialized\n",
-                                       syscommon_resman_get_resource_name(res));
+                                       syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
-       type = syscommon_resman_get_resource_type(res);
+       type = syscommon_resman_get_resource_type(resource_id);
 
        switch (attr->id) {
        case BUS_ATTR_CUR_FREQ:
@@ -92,7 +92,7 @@ static int bus_get_value_from_hal_power(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int bus_get_string_value(struct syscommon_resman_resource *res,
+static int bus_get_string_value(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -100,22 +100,22 @@ static int bus_get_string_value(struct syscommon_resman_resource *res,
        char *buf = (char *)data;
        int val;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("%s: BUS_CTRL_DEVICE_ID is not yet initialized\n",
-                                       syscommon_resman_get_resource_name(res));
+                                       syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
        switch (attr->id) {
        case BUS_ATTR_CUR_GOVERNOR:
-               val = hal_power_dvfs_get_curr_governor(syscommon_resman_get_resource_type(res),
+               val = hal_power_dvfs_get_curr_governor(syscommon_resman_get_resource_type(resource_id),
                                                        ctx->device_name, buf);
                if (val < 0)
                        return -EINVAL;
@@ -188,7 +188,7 @@ static const struct syscommon_resman_resource_attribute bus_attrs[] = {
        },
 };
 
-static int bus_setup_device_id(struct syscommon_resman_resource *res,
+static int bus_setup_device_id(int resource_id,
                                const struct syscommon_resman_resource_control *ctrl,
                                const void *data)
 {
@@ -196,17 +196,17 @@ static int bus_setup_device_id(struct syscommon_resman_resource *res,
        const struct syscommon_resman_resource_device *device;
        int device_id = (int)(intptr_t)data;
 
-       if (!res || !ctrl)
+       if (resource_id < 0 || !ctrl)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
-       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(res), device_id);
+       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(resource_id), device_id);
        if (!device) {
                _E("Not available resource: type: %s, index: %d\n",
-                               syscommon_resman_get_resource_name(res), device_id);
+                               syscommon_resman_get_resource_name(resource_id), device_id);
                return -EINVAL;
        }
 
@@ -229,7 +229,7 @@ static const struct syscommon_resman_resource_control bus_ctrls[] = {
        },
 };
 
-static int bus_create(struct syscommon_resman_resource *res)
+static int bus_create(int resource_id)
 {
        struct bus_context *ctx;
 
@@ -237,19 +237,19 @@ static int bus_create(struct syscommon_resman_resource *res)
        if (!ctx)
                return -ENOMEM;
 
-       syscommon_resman_set_resource_privdata(res, ctx);
+       syscommon_resman_set_resource_privdata(resource_id, ctx);
 
        return 0;
 }
 
-static void bus_delete(struct syscommon_resman_resource *res)
+static void bus_delete(int resource_id)
 {
        struct bus_context *ctx;
 
-       if (!res)
+       if (resource_id < 0)
                return;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return;
 
@@ -258,7 +258,7 @@ static void bus_delete(struct syscommon_resman_resource *res)
                ctx->device_name = NULL;
        }
        free(ctx);
-       syscommon_resman_set_resource_privdata(res, NULL);
+       syscommon_resman_set_resource_privdata(resource_id, NULL);
 }
 
 static const struct syscommon_resman_resource_driver bus_resource_driver = {
index 89e3180..1911f9b 100644 (file)
@@ -41,7 +41,7 @@ struct cpu_context {
        int index;
 };
 
-static int cpu_get_value_from_hal_power(struct syscommon_resman_resource *res,
+static int cpu_get_value_from_hal_power(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -49,20 +49,20 @@ static int cpu_get_value_from_hal_power(struct syscommon_resman_resource *res,
        int *val = (int *)data;
        int _val, type;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("%s: CPU_CTRL_CLUSTER_ID is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
-       type = syscommon_resman_get_resource_type(res);
+       type = syscommon_resman_get_resource_type(resource_id);
 
        switch (attr->id) {
        case CPU_ATTR_CUR_FREQ:
@@ -92,7 +92,7 @@ static int cpu_get_value_from_hal_power(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int cpu_get_string_value(struct syscommon_resman_resource *res,
+static int cpu_get_string_value(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -100,22 +100,22 @@ static int cpu_get_string_value(struct syscommon_resman_resource *res,
        char *buf = (char *)data;
        int val;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("%s: CPU_CTRL_CLUSTER_ID is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
        switch (attr->id) {
        case CPU_ATTR_CUR_GOVERNOR:
-               val = hal_power_dvfs_get_curr_governor(syscommon_resman_get_resource_type(res),
+               val = hal_power_dvfs_get_curr_governor(syscommon_resman_get_resource_type(resource_id),
                                                        ctx->device_name, buf);
                if (val < 0)
                        return -EINVAL;
@@ -188,7 +188,7 @@ static const struct syscommon_resman_resource_attribute cpu_attrs[] = {
        },
 };
 
-static int cpu_setup_cluster_id(struct syscommon_resman_resource *res,
+static int cpu_setup_cluster_id(int resource_id,
                                const struct syscommon_resman_resource_control *ctrl,
                                const void *data)
 {
@@ -196,17 +196,17 @@ static int cpu_setup_cluster_id(struct syscommon_resman_resource *res,
        const struct syscommon_resman_resource_device *device;
        int resource_index = (int)(intptr_t)data;
 
-       if (!res || !ctrl)
+       if (resource_id < 0 || !ctrl)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
-       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(res), resource_index);
+       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(resource_id), resource_index);
        if (!device) {
                _E("Not available resource: type: %s, index: %d\n",
-                               syscommon_resman_get_resource_name(res), resource_index);
+                               syscommon_resman_get_resource_name(resource_id), resource_index);
                return -EINVAL;
        }
 
@@ -229,27 +229,27 @@ static const struct syscommon_resman_resource_control cpu_ctrls[] = {
        },
 };
 
-static int cpu_create(struct syscommon_resman_resource *res)
+static int cpu_create(int resource_id)
 {
-       struct cpu_context *ctx = syscommon_resman_get_resource_privdata(res);
+       struct cpu_context *ctx = syscommon_resman_get_resource_privdata(resource_id);
 
        ctx = calloc(1, sizeof(struct cpu_context));
        if (!ctx)
                return -ENOMEM;
 
-       syscommon_resman_set_resource_privdata(res, ctx);
+       syscommon_resman_set_resource_privdata(resource_id, ctx);
 
        return 0;
 }
 
-static void cpu_delete(struct syscommon_resman_resource *res)
+static void cpu_delete(int resource_id)
 {
        struct cpu_context *ctx;
 
-       if (!res)
+       if (resource_id < 0)
                return;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return;
 
@@ -259,7 +259,7 @@ static void cpu_delete(struct syscommon_resman_resource *res)
        }
 
        free(ctx);
-       syscommon_resman_set_resource_privdata(res, NULL);
+       syscommon_resman_set_resource_privdata(resource_id, NULL);
 }
 
 static const struct syscommon_resman_resource_driver cpu_resource_driver = {
index aff1ce3..f9e7ed8 100644 (file)
@@ -77,22 +77,23 @@ struct disk_context {
        u_int32_t write_total;
 };
 
-static int disk_get_value(struct syscommon_resman_resource *res,
+static int disk_get_value(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
        struct disk_context *ctx;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("DISK_CTRL_DEVICE_ID is not yet initialized, res:name(%s) | attr:name(%s)id(%"PRId64")\n",
-                                       syscommon_resman_get_resource_name(res), syscommon_resman_get_resource_attr_name(res, attr->id), attr->id);
+                                       syscommon_resman_get_resource_name(resource_id),
+                                       syscommon_resman_get_resource_attr_name(resource_id, attr->id), attr->id);
                return -EINVAL;
        }
 
@@ -163,7 +164,7 @@ static const struct syscommon_resman_resource_attribute disk_attrs[] = {
        },
 };
 
-static int disk_setup_device_id(struct syscommon_resman_resource *res,
+static int disk_setup_device_id(int resource_id,
                                const struct syscommon_resman_resource_control *ctrl,
                                const void *data)
 {
@@ -171,17 +172,17 @@ static int disk_setup_device_id(struct syscommon_resman_resource *res,
        const struct syscommon_resman_resource_device *device;
        int resource_index = (int)(intptr_t)data;
 
-       if (!res || !ctrl)
+       if (resource_id < 0 || !ctrl)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
-       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(res), resource_index);
+       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(resource_id), resource_index);
        if (!device) {
                _E("Not available resource: type: %s, index: %d\n",
-                               syscommon_resman_get_resource_name(res), resource_index);
+                               syscommon_resman_get_resource_name(resource_id), resource_index);
                return -EINVAL;
        }
 
@@ -330,7 +331,7 @@ static int calculate_disk_stats(struct disk_context *ctx)
        return 0;
 }
 
-static int disk_create(struct syscommon_resman_resource *res)
+static int disk_create(int resource_id)
 {
        struct disk_context *ctx;
 
@@ -340,19 +341,19 @@ static int disk_create(struct syscommon_resman_resource *res)
 
        ctx->index = -1;
 
-       syscommon_resman_set_resource_privdata(res, ctx);
+       syscommon_resman_set_resource_privdata(resource_id, ctx);
 
        return 0;
 }
 
-static void disk_delete(struct syscommon_resman_resource *res)
+static void disk_delete(int resource_id)
 {
        struct disk_context *ctx;
 
-       if (!res)
+       if (resource_id < 0)
                return;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return;
 
@@ -360,24 +361,24 @@ static void disk_delete(struct syscommon_resman_resource *res)
                free(ctx->device_name);
 
        free(ctx);
-       syscommon_resman_set_resource_privdata(res, NULL);
+       syscommon_resman_set_resource_privdata(resource_id, NULL);
 }
 
-static int disk_prepare_update(struct syscommon_resman_resource *res)
+static int disk_prepare_update(int resource_id)
 {
        struct disk_context *ctx;
        int ret;
 
-       if (!res)
+       if (resource_id < 0)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("%s: DISK_CTRL_DEVICE_ID is not yet initialized\n",
-                                       syscommon_resman_get_resource_name(res));
+                                       syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
index 154b7af..de49778 100644 (file)
@@ -133,23 +133,23 @@ err_conn:
        return ret;
 }
 
-static int display_get_fps(struct syscommon_resman_resource *res,
+static int display_get_fps(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
        struct display_context *ctx;
        double *fps = (double *)data;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("%s: DISPLAY_CTRL_DEVICE_ID is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
@@ -158,23 +158,23 @@ static int display_get_fps(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int display_get_name(struct syscommon_resman_resource *res,
+static int display_get_name(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
        struct display_context *ctx;
        char *buf = (char *)data;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("%s: DISPLAY_CTRL_DEVICE_ID is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
@@ -203,7 +203,7 @@ static const struct syscommon_resman_resource_attribute display_attrs[] = {
        },
 };
 
-static int display_setup_device_id(struct syscommon_resman_resource *res,
+static int display_setup_device_id(int resource_id,
                                const struct syscommon_resman_resource_control *ctrl,
                                const void *data)
 {
@@ -211,17 +211,17 @@ static int display_setup_device_id(struct syscommon_resman_resource *res,
        const struct syscommon_resman_resource_device *device;
        int resource_index = (int)(intptr_t)data;
 
-       if (!res || !ctrl)
+       if (resource_id < 0 || !ctrl)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
-       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(res), resource_index);
+       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(resource_id), resource_index);
        if (!device) {
                _E("Not available resource: type: %s, index: %d\n",
-                               syscommon_resman_get_resource_name(res), resource_index);
+                               syscommon_resman_get_resource_name(resource_id), resource_index);
                return -EINVAL;
        }
 
@@ -254,7 +254,7 @@ static int display_monitor_func(void *data, void **result)
        return THREAD_RETURN_CONTINUE;
 }
 
-static int display_create(struct syscommon_resman_resource *res)
+static int display_create(int resource_id)
 {
        int ret = 0;
        struct display_context *ctx;
@@ -265,7 +265,7 @@ static int display_create(struct syscommon_resman_resource *res)
 
        ctx->index = -1;
 
-       syscommon_resman_set_resource_privdata(res, ctx);
+       syscommon_resman_set_resource_privdata(resource_id, ctx);
 
        g_mutex_lock(&g_fps_monitor.display_lock);
        if (g_fps_monitor.holder++ == 0)
@@ -275,14 +275,14 @@ static int display_create(struct syscommon_resman_resource *res)
        return ret;
 }
 
-static void display_delete(struct syscommon_resman_resource *res)
+static void display_delete(int resource_id)
 {
        struct display_context *ctx;
 
-       if (!res)
+       if (resource_id < 0)
                return;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return;
 
@@ -290,7 +290,7 @@ static void display_delete(struct syscommon_resman_resource *res)
                free(ctx->device_name);
 
        free(ctx);
-       syscommon_resman_set_resource_privdata(res, NULL);
+       syscommon_resman_set_resource_privdata(resource_id, NULL);
 
        g_mutex_lock(&g_fps_monitor.display_lock);
        if (--g_fps_monitor.holder == 0)
index 0d9bf31..1e3e51a 100644 (file)
@@ -41,7 +41,7 @@ struct gpu_context {
        int index;
 };
 
-static int gpu_get_value_from_hal_power(struct syscommon_resman_resource *res,
+static int gpu_get_value_from_hal_power(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -50,20 +50,20 @@ static int gpu_get_value_from_hal_power(struct syscommon_resman_resource *res,
        int *val = (int *)data;
        int _val;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("%s: GPU_CTRL_DEVICE_ID is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
-       type = syscommon_resman_get_resource_type(res);
+       type = syscommon_resman_get_resource_type(resource_id);
 
        switch (attr->id) {
        case GPU_ATTR_CUR_FREQ:
@@ -93,7 +93,7 @@ static int gpu_get_value_from_hal_power(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int gpu_get_string_value(struct syscommon_resman_resource *res,
+static int gpu_get_string_value(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -101,22 +101,22 @@ static int gpu_get_string_value(struct syscommon_resman_resource *res,
        char *buf = (char *)data;
        int val;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("%s: GPU_CTRL_DEVICE_ID is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
        switch (attr->id) {
        case GPU_ATTR_CUR_GOVERNOR:
-               val = hal_power_dvfs_get_curr_governor(syscommon_resman_get_resource_type(res),
+               val = hal_power_dvfs_get_curr_governor(syscommon_resman_get_resource_type(resource_id),
                                                        ctx->device_name, buf);
                if (val < 0)
                        return -EINVAL;
@@ -189,7 +189,7 @@ static const struct syscommon_resman_resource_attribute gpu_attrs[] = {
        },
 };
 
-static int gpu_setup_device_id(struct syscommon_resman_resource *res,
+static int gpu_setup_device_id(int resource_id,
                                const struct syscommon_resman_resource_control *ctrl,
                                const void *data)
 {
@@ -197,17 +197,17 @@ static int gpu_setup_device_id(struct syscommon_resman_resource *res,
        const struct syscommon_resman_resource_device *device;
        int resource_index = (int)(intptr_t)data;
 
-       if (!res || !ctrl)
+       if (resource_id < 0 || !ctrl)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
-       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(res), resource_index);
+       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(resource_id), resource_index);
        if (!device) {
                _E("Not available resource: type: %s, index: %d\n",
-                               syscommon_resman_get_resource_name(res), resource_index);
+                               syscommon_resman_get_resource_name(resource_id), resource_index);
                return -EINVAL;
        }
 
@@ -230,7 +230,7 @@ static const struct syscommon_resman_resource_control gpu_ctrls[] = {
        },
 };
 
-static int gpu_create(struct syscommon_resman_resource *res)
+static int gpu_create(int resource_id)
 {
        struct gpu_context *ctx;
 
@@ -238,19 +238,19 @@ static int gpu_create(struct syscommon_resman_resource *res)
        if (!ctx)
                return -ENOMEM;
 
-       syscommon_resman_set_resource_privdata(res, ctx);
+       syscommon_resman_set_resource_privdata(resource_id, ctx);
 
        return 0;
 }
 
-static void gpu_delete(struct syscommon_resman_resource *res)
+static void gpu_delete(int resource_id)
 {
        struct gpu_context *ctx;
 
-       if (!res)
+       if (resource_id < 0)
                return;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return;
 
@@ -259,7 +259,7 @@ static void gpu_delete(struct syscommon_resman_resource *res)
                ctx->device_name = NULL;
        }
        free(ctx);
-       syscommon_resman_set_resource_privdata(res, NULL);
+       syscommon_resman_set_resource_privdata(resource_id, NULL);
 }
 
 static const struct syscommon_resman_resource_driver gpu_resource_driver = {
index cee56f9..bcec23b 100644 (file)
@@ -76,14 +76,14 @@ static int memory_get_swap_total(u_int64_t *val)
        return 0;
 }
 
-static int memory_get_memory_info(struct syscommon_resman_resource *res,
+static int memory_get_memory_info(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
        u_int64_t *val = (u_int64_t *)data;
        int ret;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
        switch (attr->id) {
index d5b6507..a467548 100644 (file)
@@ -41,23 +41,23 @@ struct network_context {
        int index;
 };
 
-static int network_get_name(struct syscommon_resman_resource *res,
+static int network_get_name(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
        struct network_context *ctx;
        char *buf = (char *)data;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->device_name) {
                _E("%s: NETWORK_CTRL_DEVICE_ID is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
@@ -78,7 +78,7 @@ static const struct syscommon_resman_resource_attribute network_attrs[] = {
        },
 };
 
-static int network_setup_device_id(struct syscommon_resman_resource *res,
+static int network_setup_device_id(int resource_id,
                                const struct syscommon_resman_resource_control *ctrl,
                                const void *data)
 {
@@ -86,17 +86,17 @@ static int network_setup_device_id(struct syscommon_resman_resource *res,
        const struct syscommon_resman_resource_device *device;
        int resource_index = (int)(intptr_t)data;
 
-       if (!res || !ctrl)
+       if (resource_id < 0 || !ctrl)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
-       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(res), resource_index);
+       device = syscommon_resman_find_resource_device(syscommon_resman_get_resource_type(resource_id), resource_index);
        if (!device) {
                _E("Not available resource: type: %s, index: %d\n",
-                               syscommon_resman_get_resource_name(res), resource_index);
+                               syscommon_resman_get_resource_name(resource_id), resource_index);
                return -EINVAL;
        }
 
@@ -119,7 +119,7 @@ static const struct syscommon_resman_resource_control network_ctrls[] = {
        },
 };
 
-static int network_create(struct syscommon_resman_resource *res)
+static int network_create(int resource_id)
 {
        struct network_context *ctx;
 
@@ -129,19 +129,19 @@ static int network_create(struct syscommon_resman_resource *res)
 
        ctx->index = -1;
 
-       syscommon_resman_set_resource_privdata(res, ctx);
+       syscommon_resman_set_resource_privdata(resource_id, ctx);
 
        return 0;
 }
 
-static void network_delete(struct syscommon_resman_resource *res)
+static void network_delete(int resource_id)
 {
        struct network_context *ctx;
 
-       if (!res)
+       if (resource_id < 0)
                return;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return;
 
@@ -149,7 +149,7 @@ static void network_delete(struct syscommon_resman_resource *res)
                free(ctx->device_name);
 
        free(ctx);
-       syscommon_resman_set_resource_privdata(res, NULL);
+       syscommon_resman_set_resource_privdata(resource_id, NULL);
 }
 
 static const struct syscommon_resman_resource_driver network_resource_driver = {
index fcad513..9ba0b06 100644 (file)
@@ -55,7 +55,7 @@ static u_int64_t total_memory;
 static long jiffy;
 static bool taskstat_support;
 
-static int process_group_get_pid_list(struct syscommon_resman_resource *res,
+static int process_group_get_pid_list(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -67,10 +67,10 @@ static int process_group_get_pid_list(struct syscommon_resman_resource *res,
        int *data_array;
        int i = 0;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
@@ -95,7 +95,7 @@ static int process_group_get_pid_list(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int process_group_get_name_list(struct syscommon_resman_resource *res,
+static int process_group_get_name_list(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -107,10 +107,10 @@ static int process_group_get_name_list(struct syscommon_resman_resource *res,
        char **data_array;
        int i = 0;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
@@ -148,17 +148,17 @@ static int process_group_get_name_list(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int process_group_get_cpu_util(struct syscommon_resman_resource *res,
+static int process_group_get_cpu_util(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
        struct process_group_context *ctx;
        double *util = (double *)data;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
@@ -170,17 +170,17 @@ static int process_group_get_cpu_util(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int process_group_get_mem(struct syscommon_resman_resource *res,
+static int process_group_get_mem(int resource_id,
                           const struct syscommon_resman_resource_attribute *attr,
                           void *data)
 {
        struct process_group_context *ctx;
        u_int64_t *mem = (u_int64_t *)data;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
@@ -213,16 +213,16 @@ static int process_group_get_mem(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int process_group_get_disk_attrs(struct syscommon_resman_resource *res,
+static int process_group_get_disk_attrs(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
        struct process_group_context *ctx;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
@@ -242,13 +242,13 @@ static int process_group_get_disk_attrs(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static bool process_group_check_taskstat_support(struct syscommon_resman_resource *resource,
+static bool process_group_check_taskstat_support(int resource_id,
                                            const struct syscommon_resman_resource_attribute *attr)
 {
        return taskstat_support;
 }
 
-static bool process_group_check_gpu_support(struct syscommon_resman_resource *resource,
+static bool process_group_check_gpu_support(int resource_id,
                                            const struct syscommon_resman_resource_attribute *attr)
 {
        return taskstat_support && kernel_check_gpu_support();
@@ -357,7 +357,7 @@ static const struct syscommon_resman_resource_attribute process_group_attrs[] =
        },
 };
 
-static int process_group_setup_root_pid(struct syscommon_resman_resource *res,
+static int process_group_setup_root_pid(int resource_id,
                                const struct syscommon_resman_resource_control *ctrl,
                                const void *data)
 {
@@ -366,10 +366,10 @@ static int process_group_setup_root_pid(struct syscommon_resman_resource *res,
        int target_pid;
        int ret;
 
-       if (!res || !ctrl)
+       if (resource_id < 0 || !ctrl)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
@@ -433,7 +433,7 @@ static u_int64_t get_total_cpu_time(void)
        return total_time;
 }
 
-static int update_aggr_taskstats(struct process_group_context *ctx, struct syscommon_resman_resource *res)
+static int update_aggr_taskstats(struct process_group_context *ctx, int resource_id)
 {
        struct process_info_node *node;
        struct taskstats *prev, *curr;
@@ -445,7 +445,7 @@ static int update_aggr_taskstats(struct process_group_context *ctx, struct sysco
        gpointer key, value;
        pid_t pid;
        int ret;
-       bool include_gpu_mem = syscommon_resman_is_resource_attr_interested(res, PROCESS_GROUP_ATTR_MEM_GPU);
+       bool include_gpu_mem = syscommon_resman_is_resource_attr_interested(resource_id, PROCESS_GROUP_ATTR_MEM_GPU);
 
        memset(&ctx->info, 0, sizeof(ctx->info));
 
@@ -519,7 +519,7 @@ static int update_aggr_taskstats(struct process_group_context *ctx, struct sysco
        return 0;
 }
 
-static int process_group_prepare_update(struct syscommon_resman_resource *res)
+static int process_group_prepare_update(int resource_id)
 {
        struct process_group_context *ctx;
        struct process_info_node *pnode, *parent_pnode;
@@ -532,10 +532,10 @@ static int process_group_prepare_update(struct syscommon_resman_resource *res)
        int ret = 0;
        pid_t tgid;
 
-       if (!res)
+       if (resource_id < 0)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
@@ -646,7 +646,7 @@ static int process_group_prepare_update(struct syscommon_resman_resource *res)
                        }
                }
 
-               ret = update_aggr_taskstats(ctx, res);
+               ret = update_aggr_taskstats(ctx, resource_id);
                if (ret < 0) {
                        ret = -EINVAL;
                        goto out_free_hash;
@@ -662,7 +662,7 @@ out_close:
        return ret;
 }
 
-static int process_group_create(struct syscommon_resman_resource *res)
+static int process_group_create(int resource_id)
 {
        struct process_group_context *ctx;
 
@@ -673,19 +673,19 @@ static int process_group_create(struct syscommon_resman_resource *res)
        ctx->pid = -1;
        ctx->pi_map = g_hash_table_new_full(g_int_hash, g_int_equal, NULL, free_node);
 
-       syscommon_resman_set_resource_privdata(res, ctx);
+       syscommon_resman_set_resource_privdata(resource_id, ctx);
 
        return 0;
 }
 
-static void process_group_delete(struct syscommon_resman_resource *res)
+static void process_group_delete(int resource_id)
 {
        struct process_group_context *ctx;
 
-       if (!res)
+       if (resource_id < 0)
                return;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return;
 
@@ -695,7 +695,7 @@ static void process_group_delete(struct syscommon_resman_resource *res)
        }
 
        free(ctx);
-       syscommon_resman_set_resource_privdata(res, NULL);
+       syscommon_resman_set_resource_privdata(resource_id, NULL);
 }
 
 static int process_group_init(void)
index f386638..511c5c3 100644 (file)
@@ -45,7 +45,7 @@ static u_int64_t total_memory;
 static long jiffy;
 static bool taskstat_support;
 
-static int process_get_cpu_util(struct syscommon_resman_resource *res,
+static int process_get_cpu_util(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -53,16 +53,16 @@ static int process_get_cpu_util(struct syscommon_resman_resource *res,
        struct taskstats *prev, *curr;
        double *util = (double *)data;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->tgid) {
                _E("resource %s is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
@@ -79,7 +79,7 @@ static int process_get_cpu_util(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int process_get_mem_attrs(struct syscommon_resman_resource *res,
+static int process_get_mem_attrs(int resource_id,
                                 const struct syscommon_resman_resource_attribute *attr,
                                 void *data)
 {
@@ -87,16 +87,16 @@ static int process_get_mem_attrs(struct syscommon_resman_resource *res,
        struct taskstats *curr;
        u_int64_t *mem = (u_int64_t *)data;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->tgid) {
                _E("resource %s is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
@@ -137,7 +137,7 @@ static int process_get_mem_attrs(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int process_get_disk_attrs(struct syscommon_resman_resource *res,
+static int process_get_disk_attrs(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -145,16 +145,16 @@ static int process_get_disk_attrs(struct syscommon_resman_resource *res,
        struct taskstats *prev, *curr;
        u_int64_t period;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->tgid) {
                _E("resource %s is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
@@ -176,22 +176,22 @@ static int process_get_disk_attrs(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int process_get_context_data(struct syscommon_resman_resource *res,
+static int process_get_context_data(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
        struct process_context *ctx;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
        if (!ctx->tgid) {
                _E("resource %s is not yet initialized\n",
-                               syscommon_resman_get_resource_name(res));
+                               syscommon_resman_get_resource_name(resource_id));
                return -EINVAL;
        }
 
@@ -251,13 +251,13 @@ static int process_get_context_data(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static bool process_check_taskstat_support(struct syscommon_resman_resource *resource,
+static bool process_check_taskstat_support(int resource_idource,
                                            const struct syscommon_resman_resource_attribute *attr)
 {
        return taskstat_support;
 }
 
-static bool process_check_gpu_support(struct syscommon_resman_resource *resource,
+static bool process_check_gpu_support(int resource_idource,
                                            const struct syscommon_resman_resource_attribute *attr)
 {
        return kernel_check_gpu_support();
@@ -404,7 +404,7 @@ static u_int64_t get_total_cpu_time(void)
        return total_time;
 }
 
-static int process_setup_tgid(struct syscommon_resman_resource *res,
+static int process_setup_tgid(int resource_id,
                                const struct syscommon_resman_resource_control *ctrl,
                                const void *data)
 {
@@ -412,14 +412,14 @@ static int process_setup_tgid(struct syscommon_resman_resource *res,
        int ret;
        bool include_gpu_mem;
 
-       if (!res || !ctrl)
+       if (resource_id < 0 || !ctrl)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
-       include_gpu_mem = syscommon_resman_is_resource_attr_interested(res, PROCESS_ATTR_MEM_GPU);
+       include_gpu_mem = syscommon_resman_is_resource_attr_interested(resource_id, PROCESS_ATTR_MEM_GPU);
        memset(ctx, 0, sizeof(*ctx));
 
        ctx->tgid = (pid_t)(intptr_t)data;
@@ -462,21 +462,21 @@ static const struct syscommon_resman_resource_control process_ctrls[] = {
        },
 };
 
-static int process_prepare_update(struct syscommon_resman_resource *res)
+static int process_prepare_update(int resource_id)
 {
        struct process_context *ctx;
        u_int64_t total_time;
        int ret, online;
        bool include_gpu_mem;
 
-       if (!res)
+       if (resource_id < 0)
                return -EINVAL;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return -EINVAL;
 
-       include_gpu_mem = syscommon_resman_is_resource_attr_interested(res, PROCESS_ATTR_MEM_GPU);
+       include_gpu_mem = syscommon_resman_is_resource_attr_interested(resource_id, PROCESS_ATTR_MEM_GPU);
 
        if (taskstat_support) {
                memcpy(&ctx->prev, &ctx->curr, sizeof(struct taskstats));
@@ -499,7 +499,7 @@ static int process_prepare_update(struct syscommon_resman_resource *res)
        return 0;
 }
 
-static int process_create(struct syscommon_resman_resource *res)
+static int process_create(int resource_id)
 {
        struct process_context *ctx;
 
@@ -507,24 +507,24 @@ static int process_create(struct syscommon_resman_resource *res)
        if (!ctx)
                return -ENOMEM;
 
-       syscommon_resman_set_resource_privdata(res, ctx);
+       syscommon_resman_set_resource_privdata(resource_id, ctx);
 
        return 0;
 }
 
-static void process_delete(struct syscommon_resman_resource *res)
+static void process_delete(int resource_id)
 {
        struct process_context *ctx;
 
-       if (!res)
+       if (resource_id < 0)
                return;
 
-       ctx = syscommon_resman_get_resource_privdata(res);
+       ctx = syscommon_resman_get_resource_privdata(resource_id);
        if (!ctx)
                return;
 
        free(ctx);
-       syscommon_resman_set_resource_privdata(res, NULL);
+       syscommon_resman_set_resource_privdata(resource_id, NULL);
 }
 
 static int process_init(void)
index e615ca9..4f90c71 100644 (file)
@@ -79,7 +79,7 @@ static double __calculate_cpu_util(int64_t id, struct cpu_stat *prev,
        return util;
 }
 
-static int system_get_avg_cpu_util(struct syscommon_resman_resource *res,
+static int system_get_avg_cpu_util(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -87,10 +87,10 @@ static int system_get_avg_cpu_util(struct syscommon_resman_resource *res,
        double util, sum = 0.0;
        int i;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       sysdata = syscommon_resman_get_resource_privdata(res);
+       sysdata = syscommon_resman_get_resource_privdata(resource_id);
        if (!sysdata)
                return -EINVAL;
 
@@ -100,7 +100,7 @@ static int system_get_avg_cpu_util(struct syscommon_resman_resource *res,
                                        &sysdata->curr_cpus[i]);
                if (util < 0.0) {
                        _W("failed to calculate per-cpu util (%s: %s)\n",
-                                       syscommon_resman_get_resource_name(res), attr->name);
+                                       syscommon_resman_get_resource_name(resource_id), attr->name);
                        continue;
                }
 
@@ -118,7 +118,7 @@ static int system_get_avg_cpu_util(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int system_get_per_cpu_util(struct syscommon_resman_resource *res,
+static int system_get_per_cpu_util(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
@@ -127,10 +127,10 @@ static int system_get_per_cpu_util(struct syscommon_resman_resource *res,
        double *utils;
        int i;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
-       sysdata = syscommon_resman_get_resource_privdata(res);
+       sysdata = syscommon_resman_get_resource_privdata(resource_id);
        if (!sysdata)
                return -EINVAL;
 
@@ -152,7 +152,7 @@ static int system_get_per_cpu_util(struct syscommon_resman_resource *res,
                                        &sysdata->curr_cpus[i]);
                if (utils[i] < 0) {
                        _W("failed to calculate per-cpu util (%s: %s)\n",
-                                       syscommon_resman_get_resource_name(res), attr->name);
+                                       syscommon_resman_get_resource_name(resource_id), attr->name);
                        utils[i] = 0;
                }
        }
@@ -160,13 +160,13 @@ static int system_get_per_cpu_util(struct syscommon_resman_resource *res,
        return 0;
 }
 
-static int system_get_cpu_num(struct syscommon_resman_resource *res,
+static int system_get_cpu_num(int resource_id,
                                const struct syscommon_resman_resource_attribute *attr,
                                void *data)
 {
        int *cpu_num = (int *)data;
 
-       if (!res || !attr || !data)
+       if (resource_id < 0 || !attr || !data)
                return -EINVAL;
 
        switch (attr->id) {
@@ -251,10 +251,10 @@ static const struct syscommon_resman_resource_attribute system_attrs[] = {
        },
 };
 
-static int system_create(struct syscommon_resman_resource *res)
+static int system_create(int resource_id)
 {
        struct system_resource_data *sysdata;
-       const char *res_name = syscommon_resman_get_resource_name(res);
+       const char *res_name = syscommon_resman_get_resource_name(resource_id);
        int ret;
 
        sysdata = calloc(1, sizeof(struct system_resource_data));
@@ -284,7 +284,7 @@ static int system_create(struct syscommon_resman_resource *res)
                goto err_prev_cpus;
        }
 
-       syscommon_resman_set_resource_privdata(res, (void *)sysdata);
+       syscommon_resman_set_resource_privdata(resource_id, (void *)sysdata);
 
        return 0;
 
@@ -297,30 +297,30 @@ err:
        return ret;
 }
 
-static void system_delete(struct syscommon_resman_resource *res)
+static void system_delete(int resource_id)
 {
        struct system_resource_data *sysdata;
 
-       if (!res)
+       if (resource_id < 0)
                return;
 
-       sysdata = syscommon_resman_get_resource_privdata(res);
+       sysdata = syscommon_resman_get_resource_privdata(resource_id);
        if (!sysdata)
                return;
 
        free(sysdata->prev_cpus);
        free(sysdata->curr_cpus);
        free(sysdata);
-       syscommon_resman_set_resource_privdata(res, NULL);
+       syscommon_resman_set_resource_privdata(resource_id, NULL);
 }
 
-static int system_driver_prepare_update(struct syscommon_resman_resource *res)
+static int system_driver_prepare_update(int resource_id)
 {
        struct system_resource_data *sysdata;
-       const char *res_name = syscommon_resman_get_resource_name(res);
+       const char *res_name = syscommon_resman_get_resource_name(resource_id);
        int ret;
 
-       sysdata = syscommon_resman_get_resource_privdata(res);
+       sysdata = syscommon_resman_get_resource_privdata(resource_id);
        if (!sysdata)
                return -EINVAL;