diff options
author | H Hartley Sweeten <hartleys@visionengravers.com> | 2012-09-11 17:48:10 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-09-11 19:11:04 (GMT) |
commit | 6c39eed00cb28d4997ddf3a7aa96a1aff48c8828 (patch) | |
tree | 514997ae002e652f605da530387c5fce4a1d2d4e /drivers | |
parent | 6be4173b02f85fa3d2f8610b79ea276eea86c3ac (diff) | |
download | linux-6c39eed00cb28d4997ddf3a7aa96a1aff48c8828.tar.xz |
staging: comedi: comedi_fc: introduce cfc_check_trigger_is_unique
"Step 2" of each do_cmdtest checks that the trigger sources are
unique by doing something like this for each trigger:
if (cmd->start_src != TRIG_TIMER &&
cmd->start_src != TRIG_FOLLOW &&
cmd->start_src != TRIG_EXT)
err++;
/* Test the remaining triggers similarly */
if (err)
return 2;
Introduce a helper function in comedi_fc to handle this boilerplate.
The drivers can then just do:
err |= cfc_check_trigger_is_unique(cmd->start_src);
/* Test the remaining triggers similarly */
if (err)
return 2;
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/comedi/drivers/comedi_fc.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/staging/comedi/drivers/comedi_fc.h b/drivers/staging/comedi/drivers/comedi_fc.h index 1f08391..94481c6 100644 --- a/drivers/staging/comedi/drivers/comedi_fc.h +++ b/drivers/staging/comedi/drivers/comedi_fc.h @@ -93,4 +93,16 @@ static inline int cfc_check_trigger_src(unsigned int *src, unsigned int flags) return 0; } +/** + * cfc_check_trigger_is_unique() - make sure a trigger source is unique + * @src: the trigger source to check + */ +static inline int cfc_check_trigger_is_unique(unsigned int src) +{ + /* this test is true if more than one _src bit is set */ + if ((src & (src - 1)) != 0) + return -EINVAL; + return 0; +} + #endif /* _COMEDI_FC_H */ |