Staging: comedi: convert while loops to timeouts in s626.c
authorChase Southwood <chase.southwood@yahoo.com>
Sun, 9 Mar 2014 04:00:54 +0000 (22:00 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 17 Mar 2014 20:57:34 +0000 (13:57 -0700)
commit59a32a4624d81a014fecbeb31e63946984dbbc01
tree82815f8ea171598934a3bd52a0b19faa20632022
parent52037a0d520e988e3287b28bc767b58ddc66ad94
Staging: comedi: convert while loops to timeouts in s626.c

This patch changes a handful of while loops to timeouts to prevent
infinite looping on hardware failure. A couple such loops are in a
function (s626_debi_transfer()) which is called from critical sections,
so comedi_timeout() is unusable for them, and an iterative timeout is
used instead. For the while loops in a context where comedi_timeout() is
allowed, a new callback function, s626_send_dac_eoc(), has been defined
to evaluate the conditions that the while loops are testing.  The new
callback employs a switch statement based on a simple new enum so that
it is usable for all of the different conditions tested in while loops
in s626_send_dac().  The proper comedi_timeout() calls are then used.

Signed-off-by: Chase Southwood <chase.southwood@yahoo.com>
Reviewed-by: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/comedi/drivers/s626.c