static int counter_signal_attrs_create()

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;
}