Re: [PATCH] Staging: d53155_drv.c: cleanup fbuffer usage

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

 



On Thu, 2010-06-24 at 09:31 -0700, H Hartley Sweeten wrote:
> The global symbol dt3155_fbuffer[], declared in dt3155_isr.c, is really
> just a pointer to dt3155_status[].fbuffer. To improve readability, make
> some of the really long lines shorter, and make the buffer access more
> consistent, use &dt3155_status[].fbuffer to access the buffer structure.

I think this would be more consistent/intelligible
if the temporary wasn't
	struct dt3155_fbuffer *fb = &dt3155_status[minor].fbuffer;
but was
	struct dt3155_status *dts = &dt3155_status[minor];

> @@ -146,11 +148,11 @@ static void quick_stop (int minor)
>    dt3155_status[minor].state &= ~(DT3155_STATE_STOP|0xff);
>    /* mark the system stopped: */
>    dt3155_status[minor].state |= DT3155_STATE_IDLE;
> -  dt3155_fbuffer[minor]->stop_acquire = 0;
> -  dt3155_fbuffer[minor]->even_stopped = 0;
> +  fb->stop_acquire = 0;
> +  fb->even_stopped = 0;
>  #else
>    dt3155_status[minor].state |= DT3155_STATE_STOP;
> -  dt3155_status[minor].fbuffer.stop_acquire = 1;
> +  fb->stop_acquire = 1;
>  #endif

becomes

  dts->state &= ~(DT3155_STATE_STOP|0xff);
  /* mark the system stopped: */
  dts->state |= DT3155_STATE_IDLE;
  dts->fbuffer.stop_acquire = 0;
  dts->fbuffer.even_stopped = 0;
#else
  dts->fbuffer.stop_acquire = 1;
#endif

Another option might be to use dereferencing inlines.

static inline struct dt3155_status *dts(int index)
{
	return &dt3155_status[index];
}
static inline struct dt3155_fbuffer *fb(int index)
{
	return &(dts(index)->fbuffer);
}

I think this isn't as good as the temporary because the
compiler sometimes doesn't reuse the intermediate addresses
and the inlines have file rather than function scope.

It becomes something like:

  dts(minor)->state &= ~(DT3155_STATE_STOP|0xff);
  /* mark the system stopped: */
  dts(minor)->state |= DT3155_STATE_IDLE;
  fb(minor)->stop_acquire = 0;
  fb(minor)->even_stopped = 0;
#else
  fb(minor)->stop_acquire = 1;
#endif

I think this isn't as good as the temporary because the
compiler sometimes doesn't reuse the intermediate addresses
and the macros have file rather than function scope.


_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/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