resource-manager: Make monitor API be exclusive for INSTANCE_TYPE_MONITOR 66/288666/10
authorYoungjae Cho <y0.cho@samsung.com>
Tue, 21 Feb 2023 08:06:22 +0000 (17:06 +0900)
committerYoungjae Cho <y0.cho@samsung.com>
Wed, 8 Mar 2023 01:15:21 +0000 (10:15 +0900)
The APIs for monitor instance has changed to return error when it is
used on instance type other than INSTANCE_TYPE_MONITOR.

Change-Id: Ifa1ce8924e60cb3a08ab467bf6f112421bd0abb7
Signed-off-by: Youngjae Cho <y0.cho@samsung.com>
src/resource-manager/resource-manager.c

index f9eb0e3..d100e8e 100644 (file)
@@ -389,13 +389,18 @@ monitor_update_resource_attr(struct syscommon_resman_resource *resource,
        return 0;
 }
 
+static bool is_valid_resource(struct syscommon_resman_resource *resource, int instance_type)
+{
+       return (resource && resource->instance_type == instance_type);
+}
+
 int
 syscommon_resman_monitor_update_resource_attrs(int resource_id)
 {
        int i, ret;
        struct syscommon_resman_resource *resource = find_resource(resource_id);
 
-       if (!resource || !resource->resource_type)
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
                return -EINVAL;
 
        if (resource->driver && resource->driver->ops.prepare_update) {
@@ -525,7 +530,7 @@ syscommon_resman_is_resource_attr_supported(int resource_id, u_int64_t attr_id,
 {
        struct syscommon_resman_resource *resource = find_resource(resource_id);
 
-       if (!resource || resource->instance_type != INSTANCE_TYPE_NORMAL)
+       if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL))
                return -EINVAL;
 
        return is_resource_attr_supported(resource, attr_id, supported);
@@ -536,6 +541,9 @@ syscommon_resman_monitor_is_resource_attr_supported(int resource_id, u_int64_t a
 {
        struct syscommon_resman_resource *resource = find_resource(resource_id);
 
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
+               return -EINVAL;
+
        return is_resource_attr_supported(resource, attr_id, supported);
 }
 
@@ -689,7 +697,7 @@ syscommon_resman_monitor_get_resource_attrs_json(int resource_id, char **json_st
        struct syscommon_resman_resource *resource = find_resource(resource_id);
        int i;
 
-       if (!resource || !resource->resource_type)
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
                return -EINVAL;
 
        jobj_root = json_object_new_object();
@@ -738,6 +746,9 @@ syscommon_resman_monitor_get_resource_attr_json(int resource_id, u_int64_t attr_
        json_object *jobj_attr;
        struct syscommon_resman_resource *resource = find_resource(resource_id);
 
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
+               return -EINVAL;
+
        attr = get_resource_attr(resource, attr_id);
        attr_value = get_resource_attr_value(resource, attr_id);
 
@@ -877,10 +888,9 @@ int syscommon_resman_get_resource_list_json(char **json_string)
 }
 
 static int
-get_resource_attr_value_data(int resource_id, u_int64_t attr_id, enum syscommon_resman_data_type type, void *data)
+get_resource_attr_value_data(struct syscommon_resman_resource *resource, u_int64_t attr_id, enum syscommon_resman_data_type type, void *data)
 {
        struct syscommon_resman_resource_attribute_value *attr_value = NULL;
-       struct syscommon_resman_resource *resource = find_resource(resource_id);
 
        if (!check_attr_validate(resource, attr_id, type))
                return -EINVAL;
@@ -926,49 +936,89 @@ get_resource_attr_value_data(int resource_id, u_int64_t attr_id, enum syscommon_
 int
 syscommon_resman_monitor_get_resource_attr_int(int resource_id, u_int64_t attr_id, int32_t *data)
 {
-       return get_resource_attr_value_data(resource_id, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_INT, data);
+       struct syscommon_resman_resource *resource = find_resource(resource_id);
+
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
+               return -EINVAL;
+
+       return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_INT, data);
 }
 
 int
 syscommon_resman_monitor_get_resource_attr_int64(int resource_id, u_int64_t attr_id, int64_t *data)
 {
-       return get_resource_attr_value_data(resource_id, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_INT64, data);
+       struct syscommon_resman_resource *resource = find_resource(resource_id);
+
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
+               return -EINVAL;
+
+       return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_INT64, data);
 }
 
 int
 syscommon_resman_monitor_get_resource_attr_uint(int resource_id, u_int64_t attr_id, u_int32_t *data)
 {
-       return get_resource_attr_value_data(resource_id, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_UINT, data);
+       struct syscommon_resman_resource *resource = find_resource(resource_id);
+
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
+               return -EINVAL;
+
+       return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_UINT, data);
 }
 
 int
 syscommon_resman_monitor_get_resource_attr_uint64(int resource_id, u_int64_t attr_id, u_int64_t *data)
 {
-       return get_resource_attr_value_data(resource_id, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_UINT64, data);
+       struct syscommon_resman_resource *resource = find_resource(resource_id);
+
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
+               return -EINVAL;
+
+       return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_UINT64, data);
 }
 
 int
 syscommon_resman_monitor_get_resource_attr_double(int resource_id, u_int64_t attr_id, double *data)
 {
-       return get_resource_attr_value_data(resource_id, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_DOUBLE, data);
+       struct syscommon_resman_resource *resource = find_resource(resource_id);
+
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
+               return -EINVAL;
+
+       return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_DOUBLE, data);
 }
 
 int
 syscommon_resman_monitor_get_resource_attr_string(int resource_id, u_int64_t attr_id, char *data)
 {
-       return get_resource_attr_value_data(resource_id, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_STRING, data);
+       struct syscommon_resman_resource *resource = find_resource(resource_id);
+
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
+               return -EINVAL;
+
+       return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_STRING, data);
 }
 
 int
 syscommon_resman_monitor_get_resource_attr_array(int resource_id, u_int64_t attr_id, struct syscommon_resman_array_value **data)
 {
-       return get_resource_attr_value_data(resource_id, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_ARRAY, data);
+       struct syscommon_resman_resource *resource = find_resource(resource_id);
+
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
+               return -EINVAL;
+
+       return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_ARRAY, data);
 }
 
 int
 syscommon_resman_monitor_get_resource_attr_ptr(int resource_id, u_int64_t attr_id, void **data)
 {
-       return get_resource_attr_value_data(resource_id, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_PTR, data);
+       struct syscommon_resman_resource *resource = find_resource(resource_id);
+
+       if (!is_valid_resource(resource, INSTANCE_TYPE_MONITOR))
+               return -EINVAL;
+
+       return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_PTR, data);
 }
 
 static inline bool