Lines Matching full:grp
21 const struct attribute_group *grp) in remove_files() argument
26 if (grp->attrs) in remove_files()
27 for (attr = grp->attrs; *attr; attr++) in remove_files()
29 if (grp->bin_attrs) in remove_files()
30 for (bin_attr = grp->bin_attrs; *bin_attr; bin_attr++) in remove_files()
34 static umode_t __first_visible(const struct attribute_group *grp, struct kobject *kobj) in __first_visible() argument
36 if (grp->attrs && grp->attrs[0] && grp->is_visible) in __first_visible()
37 return grp->is_visible(kobj, grp->attrs[0], 0); in __first_visible()
39 if (grp->bin_attrs && grp->bin_attrs[0] && grp->is_bin_visible) in __first_visible()
40 return grp->is_bin_visible(kobj, grp->bin_attrs[0], 0); in __first_visible()
47 const struct attribute_group *grp, int update) in create_files() argument
53 if (grp->attrs) { in create_files()
54 for (i = 0, attr = grp->attrs; *attr && !error; i++, attr++) { in create_files()
64 if (grp->is_visible) { in create_files()
65 mode = grp->is_visible(kobj, *attr, i); in create_files()
82 remove_files(parent, grp); in create_files()
87 if (grp->bin_attrs) { in create_files()
88 for (i = 0, bin_attr = grp->bin_attrs; *bin_attr; i++, bin_attr++) { in create_files()
95 if (grp->is_bin_visible) { in create_files()
96 mode = grp->is_bin_visible(kobj, *bin_attr, i); in create_files()
101 if (grp->bin_size) in create_files()
102 size = grp->bin_size(kobj, *bin_attr, i); in create_files()
116 remove_files(parent, grp); in create_files()
124 const struct attribute_group *grp) in internal_create_group() argument
138 if (!grp->attrs && !grp->bin_attrs) { in internal_create_group()
140 kobj->name, grp->name ?: ""); in internal_create_group()
145 if (grp->name) { in internal_create_group()
146 umode_t mode = __first_visible(grp, kobj); in internal_create_group()
154 kn = kernfs_find_and_get(kobj->sd, grp->name); in internal_create_group()
156 pr_debug("attr grp %s/%s not created yet\n", in internal_create_group()
157 kobj->name, grp->name); in internal_create_group()
161 sysfs_remove_group(kobj, grp); in internal_create_group()
170 kn = kernfs_create_dir_ns(kobj->sd, grp->name, mode, in internal_create_group()
174 sysfs_warn_dup(kobj->sd, grp->name); in internal_create_group()
183 error = create_files(kn, kobj, uid, gid, grp, update); in internal_create_group()
185 if (grp->name) in internal_create_group()
190 if (grp->name && update) in internal_create_group()
199 * @grp: The attribute group to create
207 const struct attribute_group *grp) in sysfs_create_group() argument
209 return internal_create_group(kobj, 0, grp); in sysfs_create_group()
274 * @grp: The attribute group to update
290 const struct attribute_group *grp) in sysfs_update_group() argument
292 return internal_create_group(kobj, 1, grp); in sysfs_update_group()
299 * @grp: group to remove
305 const struct attribute_group *grp) in sysfs_remove_group() argument
310 if (grp->name) { in sysfs_remove_group()
311 kn = kernfs_find_and_get(parent, grp->name); in sysfs_remove_group()
314 grp->name, kobject_name(kobj)); in sysfs_remove_group()
322 remove_files(kn, grp); in sysfs_remove_group()
323 if (grp->name) in sysfs_remove_group()
353 * @grp: The files to create and the attribute group they belong to.
360 const struct attribute_group *grp) in sysfs_merge_group() argument
369 parent = kernfs_find_and_get(kobj->sd, grp->name); in sysfs_merge_group()
375 for ((i = 0, attr = grp->attrs); *attr && !error; (++i, ++attr)) in sysfs_merge_group()
391 * @grp: The files to remove and the attribute group they belong to.
394 const struct attribute_group *grp) in sysfs_unmerge_group() argument
399 parent = kernfs_find_and_get(kobj->sd, grp->name); in sysfs_unmerge_group()
401 for (attr = grp->attrs; *attr; ++attr) in sysfs_unmerge_group()
502 const struct attribute_group *grp, in sysfs_group_attrs_change_owner() argument
508 if (grp->attrs) { in sysfs_group_attrs_change_owner()
511 for (attr = grp->attrs; *attr; attr++) { in sysfs_group_attrs_change_owner()
523 if (grp->bin_attrs) { in sysfs_group_attrs_change_owner()
526 for (bin_attr = grp->bin_attrs; *bin_attr; bin_attr++) { in sysfs_group_attrs_change_owner()
544 * @grp: The attribute group.
551 const struct attribute_group *grp, kuid_t kuid, in sysfs_group_change_owner() argument
565 if (grp->name) { in sysfs_group_change_owner()
566 grp_kn = kernfs_find_and_get(kobj->sd, grp->name); in sysfs_group_change_owner()
576 error = sysfs_group_attrs_change_owner(grp_kn, grp, &newattrs); in sysfs_group_change_owner()