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);
return update_resource_attrs_interest(resource, RESOURCE_ATTR_MASK);
}
+const struct resource_attribute *
+get_resource_attr(struct resource *resource, u_int64_t attr_id)
+{
+ int attr_index = RESOURCE_ATTR_INDEX(attr_id);
+
+ if (!resource || attr_index < 0 || attr_index >= resource->num_attrs)
+ return NULL;
+
+ return &resource->attrs[attr_index];
+}
+
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)
{
- struct resource_attribute_value *attr_value =
- get_resource_attr_value(resource, attr_id);
+ const struct resource_attribute *attr = NULL;
+ struct resource_attribute_value *attr_value = NULL;
+
+ /* Check whether the data type is integer or not */
+ attr = get_resource_attr(resource, attr_id);
+ if (!attr || attr->type != DATA_TYPE_INT)
+ return -EINVAL;
+ attr_value = get_resource_attr_value(resource, attr_id);
if (!attr_value)
return -EINVAL;