Messages in this thread Patch in this message | | | From | Chandra Seetharaman <> | Date | Thu, 27 Apr 2006 18:34:54 -0700 | Subject | [PATCH 08/12] Add attribute support to RGCS |
| |
08/12 - user_interface_attr_support
Adds the basic attribute store and show functions. --
Signed-Off-By: Chandra Seetharaman <sekharan@us.ibm.com> Signed-Off-By: Shailabh Nagar <nagar@watson.ibm.com> Signed-Off-By: Matt Helsley <matthltc@us.ibm.com>
rgcs.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 52 insertions(+), 1 deletion(-)
Index: linux-2617-rc3/kernel/res_group/rgcs.c =================================================================== --- linux-2617-rc3.orig/kernel/res_group/rgcs.c 2006-04-27 10:18:39.000000000 -0700 +++ linux-2617-rc3/kernel/res_group/rgcs.c 2006-04-27 10:18:44.000000000 -0700 @@ -14,13 +14,21 @@ * as published by the Free Software Foundation. * */ +#include <linux/ctype.h> #include <linux/module.h> #include <linux/configfs.h> +#include <linux/parser.h> #include "local.h" static struct configfs_subsystem rgcs_subsys; static struct config_item_type rgcs_item_type; +struct rgroup_attribute { + struct configfs_attribute configfs_attr; + ssize_t (*show)(struct resource_group *, char *); + int (*store)(struct resource_group *, const char *); +}; + struct rgcs_rgroup { char *name; struct resource_group *core; @@ -58,6 +66,42 @@ static inline struct resource_group *ite return group_to_res_group(to_config_group(item)); } +static ssize_t rgcs_attr_show(struct config_item *item, + struct configfs_attribute *attr, char *buf) +{ + struct rgroup_attribute *rgroup_attr; + struct resource_group *rgroup = item_to_res_group(item); + + rgroup_attr = container_of(attr, struct rgroup_attribute, + configfs_attr); + return rgroup_attr->show(rgroup, buf); +} + +static ssize_t rgcs_attr_store(struct config_item *item, + struct configfs_attribute *attr, const char *buf, + size_t count) +{ + char *filtered_buf, *p; + ssize_t rc; + struct rgroup_attribute *rgroup_attr; + struct resource_group *rgroup = item_to_res_group(item); + + rgroup_attr = container_of(attr, struct rgroup_attribute, + configfs_attr); + filtered_buf = kzalloc(count + 1, GFP_KERNEL); + if (!filtered_buf) + return -ENOMEM; + strncpy(filtered_buf, buf, count); + for (p = filtered_buf; isprint(*p); ++p) + ; + *p = '\0'; + rc = rgroup_attr->store(rgroup, filtered_buf); + kfree(filtered_buf); + if (rc) + return rc; + return count; +} + /* * This is the function that is called when a 'mkdir' command * is issued under our filesystem @@ -119,17 +163,24 @@ static void rgcs_rgroup_release_item(str } static struct configfs_item_operations rgcs_rgroup_item_ops = { - .release = rgcs_rgroup_release_item, + .release = rgcs_rgroup_release_item, + .show_attribute = rgcs_attr_show, + .store_attribute = rgcs_attr_store, }; static struct configfs_group_operations rgcs_rgroup_group_ops = { .make_group = make_rgcs_rgroup, }; +static struct configfs_attribute *rgroup_attrs[] = { + NULL +}; + static struct config_item_type rgcs_item_type = { .ct_owner = THIS_MODULE, .ct_item_ops = &rgcs_rgroup_item_ops, .ct_group_ops = &rgcs_rgroup_group_ops, + .ct_attrs = rgroup_attrs }; static struct configfs_subsystem rgcs_subsys = { --
---------------------------------------------------------------------- Chandra Seetharaman | Be careful what you choose.... - sekharan@us.ibm.com | .......you may get it. ---------------------------------------------------------------------- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |