Skip to content

Commit

Permalink
staging: comedi: comedi_fc: introduce cfc_check_trigger_is_unique
Browse files Browse the repository at this point in the history
"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>
  • Loading branch information
H Hartley Sweeten authored and Greg Kroah-Hartman committed Sep 11, 2012
1 parent 6be4173 commit 6c39eed
Showing 1 changed file with 12 additions and 0 deletions.
12 changes: 12 additions & 0 deletions drivers/staging/comedi/drivers/comedi_fc.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */

0 comments on commit 6c39eed

Please sign in to comment.