resource-manager: Add syscommon_resman_set_resource_attr_bool() 54/317254/1
authorYunhee Seo <yuni.seo@samsung.com>
Tue, 3 Sep 2024 02:33:25 +0000 (11:33 +0900)
committerYunhee Seo <yuni.seo@samsung.com>
Fri, 6 Sep 2024 07:20:44 +0000 (16:20 +0900)
To support set attribute boolean type,
Below function is added
- int syscommon_resman_set_resource_attr_bool(int resource_id, u_int64_t attr_id, bool data);

Also, omitted boolean data type memory allocation is added.
Because omitted code invokes create resource manager failure.

Change-Id: Ic3e9bdf621d43d09c33c38a114e402a1e1ea417b
Signed-off-by: Yunhee Seo <yuni.seo@samsung.com>
include/libsyscommon/resource-manager.h
src/resource-manager/resource-manager.c

index 9bea67a18f07726c2dccd21ae147de8a712389c8..96e23287b106ba1f0dab001a9a4731275761d57f 100644 (file)
@@ -235,6 +235,7 @@ int syscommon_resman_set_resource_attr_int(int resource_id, u_int64_t attr_id, i
 int syscommon_resman_set_resource_attr_int64(int resource_id, u_int64_t attr_id, int64_t data);
 int syscommon_resman_set_resource_attr_uint(int resource_id, u_int64_t attr_id, u_int32_t data);
 int syscommon_resman_set_resource_attr_uint64(int resource_id, u_int64_t attr_id, u_int64_t data);
+int syscommon_resman_set_resource_attr_bool(int resource_id, u_int64_t attr_id, bool data);
 int syscommon_resman_set_resource_attr_uint64_2(int resource_id, u_int64_t attr_id,
                                        u_int64_t data1, u_int64_t data2);
 int syscommon_resman_set_resource_attr_uint64_3(int resource_id, u_int64_t attr_id,
index 683c7d4f644e7949739e0e83c4cddd1dd1338e51..a720d3374eff2353e13df8f9b2e1242c263045c4 100644 (file)
@@ -1502,6 +1502,7 @@ set_resource_attr_value_data(struct syscommon_resman_resource *resource,
                attr_value->data = *(void **) data;
                break;
        case SYSCOMMON_RESMAN_DATA_TYPE_BOOLEAN:
+               *((bool *) attr_value->data) = *(bool *) data;
        case SYSCOMMON_RESMAN_DATA_TYPE_NUM:
        default:
                return -EINVAL;
@@ -1666,6 +1667,17 @@ syscommon_resman_set_resource_attr_uint64(int resource_id, u_int64_t attr_id, u_
        return set_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_UINT64, &data, 1);
 }
 
+int
+syscommon_resman_set_resource_attr_bool(int resource_id, u_int64_t attr_id, bool data)
+{
+       struct syscommon_resman_resource *resource = find_resource(resource_id);
+
+       if (!is_valid_resource(resource, INSTANCE_TYPE_NORMAL))
+               return -EINVAL;
+
+       return set_resource_attr_value_data(resource, attr_id, SYSCOMMON_RESMAN_DATA_TYPE_BOOLEAN, &data, 1);
+}
+
 int
 syscommon_resman_set_resource_attr_double(int resource_id, u_int64_t attr_id, double data)
 {
@@ -1850,6 +1862,9 @@ set_resource_attr_interest(struct syscommon_resman_resource *resource, u_int64_t
                                 */
                                setter_only = true;
                                break;
+                       case SYSCOMMON_RESMAN_DATA_TYPE_BOOLEAN:
+                               attr_value->data = calloc(1, sizeof(bool));
+                               break;
                        default:
                                ret = -EINVAL;
                                goto err;