in counter-sysfs.c [583:621]
static int counter_signal_attrs_create(struct counter_device *const counter,
struct counter_attribute_group *const cattr_group,
struct counter_signal *const signal)
{
const enum counter_scope scope = COUNTER_SCOPE_SIGNAL;
struct device *const dev = &counter->dev;
int err;
struct counter_comp comp;
size_t i;
struct counter_comp *ext;
/* Create main Signal attribute */
comp = counter_signal_comp;
comp.signal_u32_read = counter->ops->signal_read;
err = counter_attr_create(dev, cattr_group, &comp, scope, signal);
if (err < 0)
return err;
/* Create Signal name attribute */
err = counter_name_attr_create(dev, cattr_group, signal->name);
if (err < 0)
return err;
/* Create an attribute for each extension */
for (i = 0; i < signal->num_ext; i++) {
ext = &signal->ext[i];
err = counter_attr_create(dev, cattr_group, ext, scope, signal);
if (err < 0)
return err;
err = counter_comp_id_attr_create(dev, cattr_group, ext->name,
i);
if (err < 0)
return err;
}
return 0;
}