From 4e735650ad5fc230f021de2d9cdf93fbfd20f83f Mon Sep 17 00:00:00 2001 From: Yunhee Seo Date: Fri, 31 May 2024 15:29:07 +0900 Subject: [PATCH] resource-manager: Add syscommon_resman_get_resource_attr_bool() To support get attribute boolean type, syscommon_resman_get_resource_attr_bool() is added. Change-Id: I43e25e5fa8945ac6ea4deb42fef40272a677b93c Signed-off-by: Yunhee Seo --- include/libsyscommon/resource-manager.h | 1 + src/resource-manager/resource-manager.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/include/libsyscommon/resource-manager.h b/include/libsyscommon/resource-manager.h index c038c4a..9bea67a 100644 --- a/include/libsyscommon/resource-manager.h +++ b/include/libsyscommon/resource-manager.h @@ -220,6 +220,7 @@ int syscommon_resman_get_resource_attr_double(int resource_id, u_int64_t attr_id 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_get_resource_attr_bool(int resource_id, u_int64_t attr_id, bool *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); diff --git a/src/resource-manager/resource-manager.c b/src/resource-manager/resource-manager.c index b106cff..683c7d4 100644 --- a/src/resource-manager/resource-manager.c +++ b/src/resource-manager/resource-manager.c @@ -1142,6 +1142,8 @@ get_resource_attr_value_data(struct syscommon_resman_resource *resource, u_int64 *(void **) data = attr_value->data; break; case SYSCOMMON_RESMAN_DATA_TYPE_BOOLEAN: + *(bool *) data = *((bool *) attr_value->data); + break; case SYSCOMMON_RESMAN_DATA_TYPE_NUM: default: return -EINVAL; @@ -1340,6 +1342,25 @@ syscommon_resman_get_resource_attr_ptr(int resource_id, u_int64_t attr_id, void return get_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_PTR, data); } +int +syscommon_resman_get_resource_attr_bool(int resource_id, u_int64_t attr_id, bool *data) +{ + struct syscommon_resman_resource *resource = find_resource(resource_id); + int ret; + + if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL)) + return -EINVAL; + + if (!check_attr_validate(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_BOOLEAN)) + 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_BOOLEAN, data); +} + int syscommon_resman_monitor_get_resource_attr_int(int resource_id, u_int64_t attr_id, int32_t *data) { -- 2.34.1