* [RFC 1/7] sysfs: add sysfs_merge_group and sysfs_unmerge_group
@ 2010-09-23 21:23 Alan Stern
2010-09-23 23:05 ` Greg KH
0 siblings, 1 reply; 5+ messages in thread
From: Alan Stern @ 2010-09-23 21:23 UTC (permalink / raw)
To: Rafael J. Wysocki, Greg KH; +Cc: Linux-pm mailing list
This patch (as1420) adds sysfs_merge_group() and sysfs_unmerge_group()
functions, allowing drivers easily to add and remove sets of
attributes to a pre-existing attribute group directory.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
---
Index: usb-2.6/fs/sysfs/group.c
===================================================================
--- usb-2.6.orig/fs/sysfs/group.c
+++ usb-2.6/fs/sysfs/group.c
@@ -148,6 +148,65 @@ void sysfs_remove_group(struct kobject *
sysfs_put(sd);
}
+/**
+ * sysfs_merge_group - merge files into a pre-existing attribute group.
+ * @kobj: The kobject containing the group.
+ * @grp: The files to create and the attribute group they belong to.
+ *
+ * This function returns an error if the group doesn't exist or any of the
+ * files already exist in that group, in which case none of the new files
+ * are created.
+ */
+int sysfs_merge_group(struct kobject *kobj,
+ const struct attribute_group *grp)
+{
+ struct sysfs_dirent *dir_sd;
+ int error = 0;
+ struct attribute *const *attr;
+ int i;
+
+ if (grp)
+ dir_sd = sysfs_get_dirent(kobj->sd, NULL, grp->name);
+ else
+ dir_sd = sysfs_get(kobj->sd);
+ if (!dir_sd)
+ return -ENOENT;
+
+ for ((i = 0, attr = grp->attrs); *attr && !error; (++i, ++attr))
+ error = sysfs_add_file(dir_sd, *attr, SYSFS_KOBJ_ATTR);
+ if (error) {
+ while (--i >= 0)
+ sysfs_hash_and_remove(dir_sd, NULL, (*--attr)->name);
+ }
+ sysfs_put(dir_sd);
+
+ return error;
+}
+EXPORT_SYMBOL_GPL(sysfs_merge_group);
+
+/**
+ * sysfs_unmerge_group - remove files from a pre-existing attribute group.
+ * @kobj: The kobject containing the group.
+ * @grp: The files to remove and the attribute group they belong to.
+ */
+void sysfs_unmerge_group(struct kobject *kobj,
+ const struct attribute_group *grp)
+{
+ struct sysfs_dirent *dir_sd;
+ struct attribute *const *attr;
+
+ if (grp)
+ dir_sd = sysfs_get_dirent(kobj->sd, NULL, grp->name);
+ else
+ dir_sd = sysfs_get(kobj->sd);
+ if (dir_sd) {
+ for (attr = grp->attrs; *attr; ++attr)
+ sysfs_hash_and_remove(dir_sd, NULL, (*attr)->name);
+ sysfs_put(dir_sd);
+ }
+}
+EXPORT_SYMBOL_GPL(sysfs_unmerge_group);
+
EXPORT_SYMBOL_GPL(sysfs_create_group);
EXPORT_SYMBOL_GPL(sysfs_update_group);
Index: usb-2.6/include/linux/sysfs.h
===================================================================
--- usb-2.6.orig/include/linux/sysfs.h
+++ usb-2.6/include/linux/sysfs.h
@@ -164,6 +164,10 @@ int sysfs_add_file_to_group(struct kobje
const struct attribute *attr, const char *group);
void sysfs_remove_file_from_group(struct kobject *kobj,
const struct attribute *attr, const char *group);
+int sysfs_merge_group(struct kobject *kobj,
+ const struct attribute_group *grp);
+void sysfs_unmerge_group(struct kobject *kobj,
+ const struct attribute_group *grp);
void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr);
void sysfs_notify_dirent(struct sysfs_dirent *sd);
@@ -302,6 +306,17 @@ static inline void sysfs_remove_file_fro
{
}
+static inline int sysfs_merge_group(struct kobject *kobj,
+ const struct attribute_group *grp)
+{
+ return 0;
+}
+
+static inline void sysfs_unmerge_group(struct kobject *kobj,
+ const struct attribute_group *grp)
+{
+}
+
static inline void sysfs_notify(struct kobject *kobj, const char *dir,
const char *attr)
{
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [RFC 1/7] sysfs: add sysfs_merge_group and sysfs_unmerge_group
2010-09-23 21:23 [RFC 1/7] sysfs: add sysfs_merge_group and sysfs_unmerge_group Alan Stern
@ 2010-09-23 23:05 ` Greg KH
2010-09-24 20:05 ` Rafael J. Wysocki
0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2010-09-23 23:05 UTC (permalink / raw)
To: Alan Stern; +Cc: Linux-pm mailing list
On Thu, Sep 23, 2010 at 05:23:08PM -0400, Alan Stern wrote:
> This patch (as1420) adds sysfs_merge_group() and sysfs_unmerge_group()
> functions, allowing drivers easily to add and remove sets of
> attributes to a pre-existing attribute group directory.
>
> Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Looks good to me:
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Rafael, this will go through your tree, right?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC 1/7] sysfs: add sysfs_merge_group and sysfs_unmerge_group
2010-09-23 23:05 ` Greg KH
@ 2010-09-24 20:05 ` Rafael J. Wysocki
2010-09-24 20:20 ` Greg KH
0 siblings, 1 reply; 5+ messages in thread
From: Rafael J. Wysocki @ 2010-09-24 20:05 UTC (permalink / raw)
To: Greg KH; +Cc: Linux-pm mailing list
On Friday, September 24, 2010, Greg KH wrote:
> On Thu, Sep 23, 2010 at 05:23:08PM -0400, Alan Stern wrote:
> > This patch (as1420) adds sysfs_merge_group() and sysfs_unmerge_group()
> > functions, allowing drivers easily to add and remove sets of
> > attributes to a pre-existing attribute group directory.
> >
> > Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
>
> Looks good to me:
> Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
>
> Rafael, this will go through your tree, right?
Yes, it will, if that's fine with you.
Thanks,
Rafael
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC 1/7] sysfs: add sysfs_merge_group and sysfs_unmerge_group
2010-09-24 20:05 ` Rafael J. Wysocki
@ 2010-09-24 20:20 ` Greg KH
2010-09-25 21:43 ` Rafael J. Wysocki
0 siblings, 1 reply; 5+ messages in thread
From: Greg KH @ 2010-09-24 20:20 UTC (permalink / raw)
To: Rafael J. Wysocki; +Cc: Linux-pm mailing list
On Fri, Sep 24, 2010 at 10:05:03PM +0200, Rafael J. Wysocki wrote:
> On Friday, September 24, 2010, Greg KH wrote:
> > On Thu, Sep 23, 2010 at 05:23:08PM -0400, Alan Stern wrote:
> > > This patch (as1420) adds sysfs_merge_group() and sysfs_unmerge_group()
> > > functions, allowing drivers easily to add and remove sets of
> > > attributes to a pre-existing attribute group directory.
> > >
> > > Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
> >
> > Looks good to me:
> > Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
> >
> > Rafael, this will go through your tree, right?
>
> Yes, it will, if that's fine with you.
Fine with me, merge away :)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC 1/7] sysfs: add sysfs_merge_group and sysfs_unmerge_group
2010-09-24 20:20 ` Greg KH
@ 2010-09-25 21:43 ` Rafael J. Wysocki
0 siblings, 0 replies; 5+ messages in thread
From: Rafael J. Wysocki @ 2010-09-25 21:43 UTC (permalink / raw)
To: Greg KH; +Cc: Linux-pm mailing list
On Friday, September 24, 2010, Greg KH wrote:
> On Fri, Sep 24, 2010 at 10:05:03PM +0200, Rafael J. Wysocki wrote:
> > On Friday, September 24, 2010, Greg KH wrote:
> > > On Thu, Sep 23, 2010 at 05:23:08PM -0400, Alan Stern wrote:
> > > > This patch (as1420) adds sysfs_merge_group() and sysfs_unmerge_group()
> > > > functions, allowing drivers easily to add and remove sets of
> > > > attributes to a pre-existing attribute group directory.
> > > >
> > > > Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
> > >
> > > Looks good to me:
> > > Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
> > >
> > > Rafael, this will go through your tree, right?
> >
> > Yes, it will, if that's fine with you.
>
> Fine with me, merge away :)
Thanks, I appled this patch to suspend-2.6/linux-next.
Rafael
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2010-09-25 21:43 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-09-23 21:23 [RFC 1/7] sysfs: add sysfs_merge_group and sysfs_unmerge_group Alan Stern
2010-09-23 23:05 ` Greg KH
2010-09-24 20:05 ` Rafael J. Wysocki
2010-09-24 20:20 ` Greg KH
2010-09-25 21:43 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox