}
static int
-monitor_update_resource_attr(struct syscommon_resman_resource *resource,
- u_int64_t attr_id)
+update_resource_attr(struct syscommon_resman_resource *resource, u_int64_t attr_id)
+{
+ int attr_index = RESOURCE_ATTR_INDEX(attr_id);
+ const struct syscommon_resman_resource_attribute *attr = NULL;
+ struct syscommon_resman_resource_attribute_value *attr_value = NULL;
+ int ret;
+
+ if (!resource || attr_index < 0 || attr_index >= resource->num_attrs)
+ return -EINVAL;
+
+ attr = &resource->attrs[attr_index];
+
+ if (!attr->ops.get)
+ return -EINVAL;
+
+ attr_value = &resource->attrs_value[attr_index];
+
+ ret = attr->ops.get(resource->id, attr, attr_value->data);
+ if (ret < 0)
+ return ret;
+
+ return 0;
+}
+
+static int
+monitor_update_resource_attr(struct syscommon_resman_resource *resource, u_int64_t attr_id)
{
int attr_index = RESOURCE_ATTR_INDEX(attr_id);
const struct syscommon_resman_resource_attribute *attr = NULL;
return 0;
}
+int
+syscommon_resman_get_resource_attr_int(int resource_id, u_int64_t attr_id, int32_t *data)
+{
+ struct syscommon_resman_resource *resource = find_resource(resource_id);
+ int ret;
+
+ if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL))
+ return -EINVAL;
+
+ ret = update_resource_attr(resource, attr_id);
+ if (ret < 0)
+ return ret;
+
+ return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_INT, data);
+}
+
+int
+syscommon_resman_get_resource_attr_int64(int resource_id, u_int64_t attr_id, int64_t *data)
+{
+ struct syscommon_resman_resource *resource = find_resource(resource_id);
+ int ret;
+
+ if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL))
+ return -EINVAL;
+
+ ret = update_resource_attr(resource, attr_id);
+ if (ret < 0)
+ return ret;
+
+ return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_INT64, data);
+}
+
+int
+syscommon_resman_get_resource_attr_uint(int resource_id, u_int64_t attr_id, u_int32_t *data)
+{
+ struct syscommon_resman_resource *resource = find_resource(resource_id);
+ int ret;
+
+ if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL))
+ return -EINVAL;
+
+ ret = update_resource_attr(resource, attr_id);
+ if (ret < 0)
+ return ret;
+
+ return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_UINT, data);
+}
+
+int
+syscommon_resman_get_resource_attr_uint64(int resource_id, u_int64_t attr_id, u_int64_t *data)
+{
+ struct syscommon_resman_resource *resource = find_resource(resource_id);
+ int ret;
+
+ if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL))
+ return -EINVAL;
+
+ ret = update_resource_attr(resource, attr_id);
+ if (ret < 0)
+ return ret;
+
+ return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_UINT64, data);
+}
+
+int
+syscommon_resman_get_resource_attr_double(int resource_id, u_int64_t attr_id, double *data)
+{
+ struct syscommon_resman_resource *resource = find_resource(resource_id);
+ int ret;
+
+ if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL))
+ return -EINVAL;
+
+ ret = update_resource_attr(resource, attr_id);
+ if (ret < 0)
+ return ret;
+
+ return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_DOUBLE, data);
+}
+
+int
+syscommon_resman_get_resource_attr_string(int resource_id, u_int64_t attr_id, char *data)
+{
+ struct syscommon_resman_resource *resource = find_resource(resource_id);
+ int ret;
+
+ if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL))
+ return -EINVAL;
+
+ ret = update_resource_attr(resource, attr_id);
+ if (ret < 0)
+ return ret;
+
+ return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_STRING, data);
+}
+
+int
+syscommon_resman_get_resource_attr_array(int resource_id, u_int64_t attr_id, struct syscommon_resman_array_value **data)
+{
+ struct syscommon_resman_resource *resource = find_resource(resource_id);
+ int ret;
+
+ if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL))
+ return -EINVAL;
+
+ ret = update_resource_attr(resource, attr_id);
+ if (ret < 0)
+ return ret;
+
+ return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_ARRAY, data);
+}
+
+int
+syscommon_resman_get_resource_attr_ptr(int resource_id, u_int64_t attr_id, void **data)
+{
+ struct syscommon_resman_resource *resource = find_resource(resource_id);
+ int ret;
+
+ if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL))
+ return -EINVAL;
+
+ ret = update_resource_attr(resource, attr_id);
+ if (ret < 0)
+ return ret;
+
+ return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_PTR, data);
+}
+
int
syscommon_resman_monitor_get_resource_attr_int(int resource_id, u_int64_t attr_id, int32_t *data)
{
int syscommon_resman_monitor_get_resource_attr_json(int resource_id, u_int64_t attr_id, char **json_string);
int syscommon_resman_get_resource_list_json(char **json_string);
+int syscommon_resman_get_resource_attr_int(int resource_id, u_int64_t attr_id, int32_t *data);
+int syscommon_resman_get_resource_attr_int64(int resource_id, u_int64_t attr_id, int64_t *data);
+int syscommon_resman_get_resource_attr_uint(int resource_id, u_int64_t attr_id, u_int32_t *data);
+int syscommon_resman_get_resource_attr_uint64(int resource_id, u_int64_t attr_id, u_int64_t *data);
+int syscommon_resman_get_resource_attr_double(int resource_id, u_int64_t attr_id, double *data);
+int syscommon_resman_get_resource_attr_string(int resource_id, u_int64_t attr_id, char *data);
+int syscommon_resman_get_resource_attr_array(int resource_id, u_int64_t attr_id, struct syscommon_resman_array_value **data);
+int syscommon_resman_get_resource_attr_ptr(int resource_id, u_int64_t attr_id, void **data);
+
int syscommon_resman_monitor_get_resource_attr_int(int resource_id, u_int64_t attr_id, int32_t *data);
int syscommon_resman_monitor_get_resource_attr_int64(int resource_id, u_int64_t attr_id, int64_t *data);
int syscommon_resman_monitor_get_resource_attr_uint(int resource_id, u_int64_t attr_id, u_int32_t *data);