25
25
for (i = 0, attr = grp->attrs; *attr; i++, attr++)
26
sysfs_hash_and_remove(dir_sd, (*attr)->name);
26
sysfs_hash_and_remove(dir_sd, NULL, (*attr)->name);
29
29
static int create_files(struct sysfs_dirent *dir_sd, struct kobject *kobj,
39
39
* visibility. Do this by first removing then
40
40
* re-adding (if required) the file */
42
sysfs_hash_and_remove(dir_sd, (*attr)->name);
42
sysfs_hash_and_remove(dir_sd, NULL, (*attr)->name);
43
43
if (grp->is_visible) {
44
44
mode = grp->is_visible(kobj, *attr, i);
132
132
struct sysfs_dirent *sd;
135
sd = sysfs_get_dirent(dir_sd, grp->name);
135
sd = sysfs_get_dirent(dir_sd, NULL, grp->name);
137
137
WARN(!sd, KERN_WARNING "sysfs group %p not found for "
138
138
"kobject '%s'\n", grp, kobject_name(kobj));
152
* sysfs_merge_group - merge files into a pre-existing attribute group.
153
* @kobj: The kobject containing the group.
154
* @grp: The files to create and the attribute group they belong to.
156
* This function returns an error if the group doesn't exist or any of the
157
* files already exist in that group, in which case none of the new files
160
int sysfs_merge_group(struct kobject *kobj,
161
const struct attribute_group *grp)
163
struct sysfs_dirent *dir_sd;
165
struct attribute *const *attr;
168
dir_sd = sysfs_get_dirent(kobj->sd, NULL, grp->name);
172
for ((i = 0, attr = grp->attrs); *attr && !error; (++i, ++attr))
173
error = sysfs_add_file(dir_sd, *attr, SYSFS_KOBJ_ATTR);
176
sysfs_hash_and_remove(dir_sd, NULL, (*--attr)->name);
182
EXPORT_SYMBOL_GPL(sysfs_merge_group);
185
* sysfs_unmerge_group - remove files from a pre-existing attribute group.
186
* @kobj: The kobject containing the group.
187
* @grp: The files to remove and the attribute group they belong to.
189
void sysfs_unmerge_group(struct kobject *kobj,
190
const struct attribute_group *grp)
192
struct sysfs_dirent *dir_sd;
193
struct attribute *const *attr;
195
dir_sd = sysfs_get_dirent(kobj->sd, NULL, grp->name);
197
for (attr = grp->attrs; *attr; ++attr)
198
sysfs_hash_and_remove(dir_sd, NULL, (*attr)->name);
202
EXPORT_SYMBOL_GPL(sysfs_unmerge_group);
152
205
EXPORT_SYMBOL_GPL(sysfs_create_group);
153
206
EXPORT_SYMBOL_GPL(sysfs_update_group);