Re: [PATCH v5 3/4] of: overlay: add per overlay sysfs attributes
From: Greg Kroah-Hartman <hidden>
Date: 2015-10-04 19:23:18
Also in:
linux-devicetree, lkml
On Wed, Sep 16, 2015 at 07:09:10PM +0300, Pantelis Antoniou wrote:
quoted hunk ↗ jump to hunk
The two default overlay attributes are: * A targets sysfs attribute listing the targets of the installed overlay. The targets list the path on the kernel's device tree where each overlay fragment is applied to * A per overlay can_remove sysfs attribute that reports whether the overlay can be removed or not due to another overlapping overlay. Signed-off-by: Pantelis Antoniou <pantelis.antoniou-OWPKS81ov/FWk0Htik3J/w@public.gmane.org> --- drivers/of/overlay.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+)diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c index 62cfb99..cff3c05 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c@@ -373,8 +373,61 @@ static const struct attribute *overlay_global_attrs[] = { NULL }; +static ssize_t can_remove_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct of_overlay *ov = kobj_to_overlay(kobj); + + return snprintf(buf, PAGE_SIZE, "%d\n", overlay_removal_is_ok(ov)); +} + +static ssize_t targets_show(struct kobject *kobj, + struct kobj_attribute *attr, char *buf) +{ + struct of_overlay *ov = kobj_to_overlay(kobj); + struct of_overlay_info *ovinfo; + char *s, *e; + ssize_t ret; + int i, len; + + s = buf; + e = buf + PAGE_SIZE; + + mutex_lock(&of_mutex); + + /* targets */ + for (i = 0; i < ov->count; i++) { + ovinfo = &ov->ovinfo_tab[i]; + + len = snprintf(s, e - s, "%s\n", + of_node_full_name(ovinfo->target)); + if (len == 0) { + ret = -ENOSPC; + goto err; + } + s += len; + }
Multiple values per sysfs file? Not ok, this is not going to work, sorry, please fix. greg k-h