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) \
/* 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
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;
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) {
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)
{
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;
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;
+}