Re: [PATCH] staging: most: do not show interface dependent attrs by default in sysfs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Aug 06, 2018 at 12:03:10PM +0200, Christian Gromm wrote:
> The channel attribute dbr_size is only relevant for the DIM2 interface. So
> is the packets_per_xact for USB. Currently, all attrs are shown by default
> in sysfs for any channel. To get a clean content of a channel directory,
> this patch makes the attributes show up only on the channel they belong to.
> 
> Signed-off-by: Christian Gromm <christian.gromm@xxxxxxxxxxxxx>
> ---
>  drivers/staging/most/core.c      | 12 +++++++++---
>  drivers/staging/most/core.h      |  5 +++++
>  drivers/staging/most/dim2/dim2.c |  1 +
>  drivers/staging/most/usb/usb.c   |  1 +
>  4 files changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/staging/most/core.c b/drivers/staging/most/core.c
> index f4c4646..19694a1 100644
> --- a/drivers/staging/most/core.c
> +++ b/drivers/staging/most/core.c
> @@ -25,6 +25,7 @@
>  
>  #define MAX_CHANNELS	64
>  #define STRING_SIZE	80
> +#define MAX_NUM_ATTRS	14
>  
>  static struct ida mdev_id;
>  static int dummy_num_buffers;
> @@ -459,7 +460,7 @@ static DEVICE_ATTR_RW(set_subbuffer_size);
>  static DEVICE_ATTR_RW(set_packets_per_xact);
>  static DEVICE_ATTR_RW(set_dbr_size);
>  
> -static struct attribute *channel_attrs[] = {
> +static struct attribute *channel_attrs[MAX_NUM_ATTRS] = {

Oh, this is ripe for abuse :)

>  	DEV_ATTR(available_directions),
>  	DEV_ATTR(available_datatypes),
>  	DEV_ATTR(number_of_packet_buffers),
> @@ -472,8 +473,6 @@ static struct attribute *channel_attrs[] = {
>  	DEV_ATTR(set_direction),
>  	DEV_ATTR(set_datatype),
>  	DEV_ATTR(set_subbuffer_size),
> -	DEV_ATTR(set_packets_per_xact),
> -	DEV_ATTR(set_dbr_size),
>  	NULL,
>  };
>  
> @@ -1416,6 +1415,13 @@ int most_register_interface(struct most_interface *iface)
>  	iface->dev.init_name = iface->p->name;
>  	iface->dev.bus = &mc.bus;
>  	iface->dev.parent = &mc.dev;
> +	if (iface->extra_attrs == XACT_ATTRS) {
> +		channel_attrs[12] = DEV_ATTR(set_packets_per_xact);
> +		channel_attrs[13] = NULL;
> +	} else if (iface->extra_attrs == DBR_ATTRS) {
> +		channel_attrs[12] = DEV_ATTR(set_dbr_size);
> +		channel_attrs[13] = NULL;
> +	}

No, please use the proper way of doing this.  Your attribute can have a
callback when it is being created to test if it should be created or
not.  Use that, this is exactly what it is there for.

thanks,

greg k-h
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel



[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux