util: resource: Use internal interest_mask 20/270620/2
authorDongwoo Lee <dwoo08.lee@samsung.com>
Fri, 4 Feb 2022 04:16:20 +0000 (13:16 +0900)
committerDongwoo Lee <dwoo08.lee@samsung.com>
Mon, 7 Feb 2022 07:06:33 +0000 (16:06 +0900)
Since interesting attributes might not be changed usually, it seems
better that each resource has interest_mask internally.

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

index 32745a4fef6be6def6857539adfad83607a2563d..64d6e2f81c513089691cec1fde6cdfb87defb700 100644 (file)
@@ -98,6 +98,7 @@ struct resource {
        int num_attrs;
        const struct resource_attribute *attrs;
        struct resource_attribute_value *attrs_value;
+       u_int64_t attr_interest;
 };
 
 #define RESOURCE_DRIVER_REGISTER(resource_driver)      \
@@ -127,12 +128,11 @@ void delete_resource(struct resource *resource);
 /* Handle resource attribute */
 int update_resource_attr(struct resource *resource, u_int64_t attr_id);
 int update_resource_attrs(struct resource *resource);
-int update_resource_attrs_interest(struct resource *resource, u_int64_t attr_interest_mask);
-
 const struct resource_attribute *get_resource_attr(struct resource *resource, u_int64_t attr_id);
 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 get_resource_attr_integer_sync(struct resource *resource, u_int64_t attr_id);
-
+void set_resource_attr_interest(struct resource *resource, u_int64_t interest_mask);
+void unset_resource_attr_interest(struct resource *resource, u_int64_t interest_mask);
 #endif
index 6805dec0563dd2603cd9959b15cec2a5c3af37db..ff766eecb7dda16722a2a474fa9ccbb46c796c29 100644 (file)
@@ -213,7 +213,7 @@ int update_resource_attr(struct resource *resource, u_int64_t attr_id)
        return 0;
 }
 
-int update_resource_attrs_interest(struct resource *resource, u_int64_t interest_mask)
+int update_resource_attrs(struct resource *resource)
 {
        int i, ret;
 
@@ -221,7 +221,7 @@ int update_resource_attrs_interest(struct resource *resource, u_int64_t interest
                return -EINVAL;
 
        for (i = 0; i < resource->num_attrs; i++) {
-               if (!(resource->attrs[i].id & interest_mask))
+               if (!(resource->attrs[i].id & resource->attr_interest))
                        continue;
                ret = update_resource_attr(resource, resource->attrs[i].id);
                if (ret < 0) {
@@ -232,11 +232,6 @@ int update_resource_attrs_interest(struct resource *resource, u_int64_t interest
        return 0;
 }
 
-int update_resource_attrs(struct resource *resource)
-{
-       return update_resource_attrs_interest(resource, RESOURCE_ATTR_MASK);
-}
-
 const struct resource_attribute *
 get_resource_attr(struct resource *resource, u_int64_t attr_id)
 {
@@ -269,6 +264,9 @@ int get_resource_attr_integer(struct resource *resource, u_int64_t attr_id)
        if (!attr || attr->type != DATA_TYPE_INT)
                return -EINVAL;
 
+       if (!(attr->id & resource->attr_interest))
+               return -EINVAL;
+
        attr_value = get_resource_attr_value(resource, attr_id);
        if (!attr_value)
                return -EINVAL;
@@ -286,3 +284,13 @@ int get_resource_attr_integer_sync(struct resource *resource, u_int64_t attr_id)
 
        return get_resource_attr_integer(resource, attr_id);
 }
+
+void set_resource_attr_interest(struct resource *resource, u_int64_t interest_mask)
+{
+       resource->attr_interest |= interest_mask;
+}
+
+void unset_resource_attr_interest(struct resource *resource, u_int64_t interest_mask)
+{
+       resource->attr_interest &= ~interest_mask;
+}