sysfs: allow attributes to be added to groups
This patch (as860) adds two new sysfs routines: sysfs_add_file_to_group() and sysfs_remove_file_from_group(). A later patch adds code that uses the new routines. Signed-off-by: Alan Stern <stern@rowland.harvard.edu> Cc: Maneesh Soni <maneesh@in.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
b5e795f8df
commit
dfa87c824a
|
@ -501,6 +501,30 @@ int sysfs_create_file(struct kobject * kobj, const struct attribute * attr)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* sysfs_add_file_to_group - add an attribute file to a pre-existing group.
|
||||
* @kobj: object we're acting for.
|
||||
* @attr: attribute descriptor.
|
||||
* @group: group name.
|
||||
*/
|
||||
int sysfs_add_file_to_group(struct kobject *kobj,
|
||||
const struct attribute *attr, const char *group)
|
||||
{
|
||||
struct dentry *dir;
|
||||
int error;
|
||||
|
||||
dir = lookup_one_len(group, kobj->dentry, strlen(group));
|
||||
if (IS_ERR(dir))
|
||||
error = PTR_ERR(dir);
|
||||
else {
|
||||
error = sysfs_add_file(dir, attr, SYSFS_KOBJ_ATTR);
|
||||
dput(dir);
|
||||
}
|
||||
return error;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sysfs_add_file_to_group);
|
||||
|
||||
|
||||
/**
|
||||
* sysfs_update_file - update the modified timestamp on an object attribute.
|
||||
* @kobj: object we're acting for.
|
||||
|
@ -586,6 +610,26 @@ void sysfs_remove_file(struct kobject * kobj, const struct attribute * attr)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* sysfs_remove_file_from_group - remove an attribute file from a group.
|
||||
* @kobj: object we're acting for.
|
||||
* @attr: attribute descriptor.
|
||||
* @group: group name.
|
||||
*/
|
||||
void sysfs_remove_file_from_group(struct kobject *kobj,
|
||||
const struct attribute *attr, const char *group)
|
||||
{
|
||||
struct dentry *dir;
|
||||
|
||||
dir = lookup_one_len(group, kobj->dentry, strlen(group));
|
||||
if (!IS_ERR(dir)) {
|
||||
sysfs_hash_and_remove(dir, attr->name);
|
||||
dput(dir);
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(sysfs_remove_file_from_group);
|
||||
|
||||
|
||||
EXPORT_SYMBOL_GPL(sysfs_create_file);
|
||||
EXPORT_SYMBOL_GPL(sysfs_remove_file);
|
||||
EXPORT_SYMBOL_GPL(sysfs_update_file);
|
||||
|
|
|
@ -126,6 +126,11 @@ void sysfs_remove_bin_file(struct kobject *kobj, struct bin_attribute *attr);
|
|||
int __must_check sysfs_create_group(struct kobject *,
|
||||
const struct attribute_group *);
|
||||
void sysfs_remove_group(struct kobject *, const struct attribute_group *);
|
||||
int sysfs_add_file_to_group(struct kobject *kobj,
|
||||
const struct attribute *attr, const char *group);
|
||||
void sysfs_remove_file_from_group(struct kobject *kobj,
|
||||
const struct attribute *attr, const char *group);
|
||||
|
||||
void sysfs_notify(struct kobject * k, char *dir, char *attr);
|
||||
|
||||
|
||||
|
@ -210,6 +215,18 @@ static inline void sysfs_remove_group(struct kobject * k, const struct attribute
|
|||
;
|
||||
}
|
||||
|
||||
static inline int sysfs_add_file_to_group(struct kobject *kobj,
|
||||
const struct attribute *attr, const char *group)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline void sysfs_remove_file_from_group(struct kobject *kobj,
|
||||
const struct attribute *attr, const char *group);
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
static inline void sysfs_notify(struct kobject * k, char *dir, char *attr)
|
||||
{
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue