On Thu, May 19, 2011 at 2:44 PM, Wolfram Sang <[email protected]> wrote:
> Hi,
>
>> - /* FIXME: insert a timeout so we don't hang here indefinitely
>> */
>> - while (pl022->tx < pl022->tx_end || pl022->rx < pl022->rx_end)
>> +
>> + timeout = jiffies + msecs_to_jiffies(SPI_POLLING_TIMEOUT);
>
> Won't you miss the transfer if you get interrupted here longer than
> SPI_POLLING_TIMEOUT?
Yeah... preempted for a second hm.
>> + while (pl022->tx < pl022->tx_end || pl022->rx < pl022->rx_end)
>> {
>> + if (time_after(jiffies, timeout)) {
>> + dev_warn(&pl022->adev->dev,
>> + "%s: timeout!\n", __func__);
>> + message->state = STATE_ERROR;
>> + goto out;
>> + }
>> readwriter(pl022);
>> + }
What about we move readerwriter() above if (time_after...) then it atleast
gets one chance to run even if we're preempted for 10 seconds.
Any other design patterns that'd be better?
Yours,
Linus Walleij
------------------------------------------------------------------------------
What Every C/C++ and Fortran developer Should Know!
Read this article and learn how Intel has extended the reach of its
next-generation tools to help Windows* and Linux* C/C++ and Fortran
developers boost performance applications - including clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
spi-devel-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spi-devel-general