resource: Distinguish signed/unsigned and 32/64 bits integer data types 64/271764/1
authorDongwoo Lee <dwoo08.lee@samsung.com>
Mon, 28 Feb 2022 03:46:25 +0000 (12:46 +0900)
committerDongwoo Lee <dwoo08.lee@samsung.com>
Mon, 28 Feb 2022 05:28:09 +0000 (14:28 +0900)
To provide clients with the precise integer values, now support the new
data types:
 - DATA_TYPE_INT(32-bit signed integer),
 - DATA_TPYE_INT64(64-bit signed integer),
 - DATA_TYPE_UINT(32-bit unsigned integer),
 - DATA_TPYE_UINT64(64-bit unsigned integer),

Change-Id: I8f70fb38a1fd9876b53d52c2f7592120fc0f9b5c
Signed-off-by: Dongwoo Lee <dwoo08.lee@samsung.com>
include/util/resource.h
src/util/resource.c

index 00da7f5..a2d3765 100644 (file)
@@ -27,6 +27,9 @@
 enum monitor_data_type {
        DATA_TYPE_UNKNOWN = 0,
        DATA_TYPE_INT,
+       DATA_TYPE_INT64,
+       DATA_TYPE_UINT,
+       DATA_TYPE_UINT64,
        DATA_TYPE_DOUBLE,
        DATA_TYPE_STRING,
        DATA_TYPE_ARRAY,
@@ -142,7 +145,10 @@ const struct resource_attribute *get_resource_attr(struct resource *resource, u_
 struct resource_attribute_value *
 get_resource_attr_value(struct resource *resource, u_int64_t attr_id);
 
-int get_resource_attr_integer(struct resource *resource, u_int64_t attr_id, int *data);
+int get_resource_attr_int(struct resource *resource, u_int64_t attr_id, int32_t *data);
+int get_resource_attr_int64(struct resource *resource, u_int64_t attr_id, int64_t *data);
+int get_resource_attr_uint(struct resource *resource, u_int64_t attr_id, u_int32_t *data);
+int get_resource_attr_uint64(struct resource *resource, u_int64_t attr_id, u_int32_t *data);
 int get_resource_attr_double(struct resource *resource, u_int64_t attr_id, double *data);
 int get_resource_attr_string(struct resource *resource, u_int64_t attr_id, char **data);
 int put_resource_attr_string(struct resource *resource, u_int64_t attr_id);
index fedcb71..fc342f4 100644 (file)
@@ -296,7 +296,7 @@ static bool check_attr_validate(struct resource *resource, u_int64_t attr_id, in
        return true;
 }
 
-int get_resource_attr_integer(struct resource *resource, u_int64_t attr_id, int *data)
+int get_resource_attr_int(struct resource *resource, u_int64_t attr_id, int32_t *data)
 {
        struct resource_attribute_value *attr_value = NULL;
 
@@ -307,7 +307,55 @@ int get_resource_attr_integer(struct resource *resource, u_int64_t attr_id, int
        if (!attr_value)
                return -EINVAL;
 
-       *data = (int)(intptr_t)attr_value->data;
+       *data = (int32_t)(intptr_t)attr_value->data;
+
+       return 0;
+}
+
+int get_resource_attr_int64(struct resource *resource, u_int64_t attr_id, int64_t *data)
+{
+       struct resource_attribute_value *attr_value = NULL;
+
+       if (!check_attr_validate(resource, attr_id, DATA_TYPE_INT))
+               return -EINVAL;
+
+       attr_value = get_resource_attr_value(resource, attr_id);
+       if (!attr_value)
+               return -EINVAL;
+
+       *data = (int64_t)(intptr_t)attr_value->data;
+
+       return 0;
+}
+
+int get_resource_attr_uint(struct resource *resource, u_int64_t attr_id, u_int32_t *data)
+{
+       struct resource_attribute_value *attr_value = NULL;
+
+       if (!check_attr_validate(resource, attr_id, DATA_TYPE_INT))
+               return -EINVAL;
+
+       attr_value = get_resource_attr_value(resource, attr_id);
+       if (!attr_value)
+               return -EINVAL;
+
+       *data = (u_int32_t)(intptr_t)attr_value->data;
+
+       return 0;
+}
+
+int get_resource_attr_uint64(struct resource *resource, u_int64_t attr_id, u_int32_t *data)
+{
+       struct resource_attribute_value *attr_value = NULL;
+
+       if (!check_attr_validate(resource, attr_id, DATA_TYPE_INT))
+               return -EINVAL;
+
+       attr_value = get_resource_attr_value(resource, attr_id);
+       if (!attr_value)
+               return -EINVAL;
+
+       *data = (u_int64_t)(intptr_t)attr_value->data;
 
        return 0;
 }