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

Reply via email to