From: Youngjae Cho Date: Tue, 21 Feb 2023 08:06:22 +0000 (+0900) Subject: resource-manager: Make monitor API be exclusive for INSTANCE_TYPE_MONITOR X-Git-Tag: accepted/tizen/unified/20230310.062652~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F66%2F288666%2F10;p=platform%2Fcore%2Fsystem%2Flibsyscommon.git resource-manager: Make monitor API be exclusive for INSTANCE_TYPE_MONITOR 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 --- diff --git a/src/resource-manager/resource-manager.c b/src/resource-manager/resource-manager.c index f9eb0e3..d100e8e 100644 --- a/src/resource-manager/resource-manager.c +++ b/src/resource-manager/resource-manager.c @@ -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