summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorH Hartley Sweeten <hartleys@visionengravers.com>2012-09-11 17:48:10 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-09-11 19:11:04 (GMT)
commit6c39eed00cb28d4997ddf3a7aa96a1aff48c8828 (patch)
tree514997ae002e652f605da530387c5fce4a1d2d4e /drivers
parent6be4173b02f85fa3d2f8610b79ea276eea86c3ac (diff)
downloadlinux-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.h12
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 */