#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;
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);
_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)
mtx_init(&new_cmd->lock, mtx_plain);
cnd_init(&new_cmd->signal);
+ new_cmd->resource_id = -1;
new_cmd->done = false;
*cmd = new_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);
#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)
return THREAD_RETURN_CONTINUE;
}
- syscommon_resman_update_resource_attrs(cmd->resource);
+ syscommon_resman_update_resource_attrs(cmd->resource_id);
cmd->done = true;
smp_wmb();
#include <util/gdbus-util.h>
#include <monitor/monitor.h>
+#include <libsyscommon/resource-manager.h>
+
static struct monitor g_monitor;
static gboolean g_debug_mode;
#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>
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;
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;
*/
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;
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;
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;
}
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);
}
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;
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;
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;
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;
}
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;
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;
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;
}
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;
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:
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;
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;
}
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;
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;
}
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;
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;
}
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;
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;
}
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;
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;
}
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;
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;
}
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;
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;
}
*/
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);
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;
}
if (!res_inst)
return;
- syscommon_resman_delete_resource(res_inst->res);
+ syscommon_resman_delete_resource(res_inst->id);
free(res_inst);
}
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;
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)
#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)
{
int ret;
int *val = (int *)data;
- if (!res || !attr || !data)
+ if (resource_id < 0 || !attr || !data)
return -EINVAL;
switch (attr->id) {
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);
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)
{
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:
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)
{
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;
},
};
-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)
{
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;
}
},
};
-static int bus_create(struct syscommon_resman_resource *res)
+static int bus_create(int resource_id)
{
struct bus_context *ctx;
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;
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 = {
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)
{
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:
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)
{
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;
},
};
-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)
{
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;
}
},
};
-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;
}
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 = {
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;
}
},
};
-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)
{
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;
}
return 0;
}
-static int disk_create(struct syscommon_resman_resource *res)
+static int disk_create(int resource_id)
{
struct disk_context *ctx;
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;
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;
}
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;
}
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;
}
},
};
-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)
{
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;
}
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;
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)
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;
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)
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)
{
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:
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)
{
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;
},
};
-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)
{
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;
}
},
};
-static int gpu_create(struct syscommon_resman_resource *res)
+static int gpu_create(int resource_id)
{
struct gpu_context *ctx;
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;
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 = {
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) {
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;
}
},
};
-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)
{
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;
}
},
};
-static int network_create(struct syscommon_resman_resource *res)
+static int network_create(int resource_id)
{
struct network_context *ctx;
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;
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 = {
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)
{
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;
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)
{
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;
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;
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;
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;
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();
},
};
-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)
{
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;
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;
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));
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;
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;
}
}
- ret = update_aggr_taskstats(ctx, res);
+ ret = update_aggr_taskstats(ctx, resource_id);
if (ret < 0) {
ret = -EINVAL;
goto out_free_hash;
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;
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;
}
free(ctx);
- syscommon_resman_set_resource_privdata(res, NULL);
+ syscommon_resman_set_resource_privdata(resource_id, NULL);
}
static int process_group_init(void)
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)
{
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;
}
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)
{
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;
}
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)
{
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;
}
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;
}
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();
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)
{
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;
},
};
-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));
return 0;
}
-static int process_create(struct syscommon_resman_resource *res)
+static int process_create(int resource_id)
{
struct process_context *ctx;
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)
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)
{
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;
&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;
}
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)
{
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;
&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;
}
}
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) {
},
};
-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));
goto err_prev_cpus;
}
- syscommon_resman_set_resource_privdata(res, (void *)sysdata);
+ syscommon_resman_set_resource_privdata(resource_id, (void *)sysdata);
return 0;
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;