public inbox for linux-pm@vger.kernel.org
 help / color / mirror / Atom feed
* [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