Skip to content

Commit

Permalink
staging: comedi: comedi_fc.h: introduce new helpers for do_cmdtest st…
Browse files Browse the repository at this point in the history
…ep 3

Step 3 of the do_cmdtest functions validates the arguments for the
command to be executed. Most of these are simple tests to see if the
argument "is" a value, a "min" value, or a "max" value. Each of these
tests then clamps the argument to the value if it fails the test.

Introduce three new helper functions in comedi_fc.h to handle these
tests and remove the boilerplate code from the drivers.

The new helper functions are:

cfc_check_trigger_arg_is()  - argument must be == the value
cfc_check_trigger_arg_min() - argument must be >= the value
cfc_check_trigger_arg_max() - argument must be <= the value

All of these helpers set the argument to the value and return -EINVAL
if the validation fails.

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 Nov 15, 2012
1 parent 1f168db commit 61ca8ba
Showing 1 changed file with 44 additions and 0 deletions.
44 changes: 44 additions & 0 deletions drivers/staging/comedi/drivers/comedi_fc.h
Original file line number Diff line number Diff line change
Expand Up @@ -105,4 +105,48 @@ static inline int cfc_check_trigger_is_unique(unsigned int src)
return 0;
}

/**
* cfc_check_trigger_arg_is() - trivially validate a trigger argument
* @arg: pointer to the trigger arg to validate
* @val: the value the argument should be
*/
static inline int cfc_check_trigger_arg_is(unsigned int *arg, unsigned int val)
{
if (*arg != val) {
*arg = val;
return -EINVAL;
}
return 0;
}

/**
* cfc_check_trigger_arg_min() - trivially validate a trigger argument
* @arg: pointer to the trigger arg to validate
* @val: the minimum value the argument should be
*/
static inline int cfc_check_trigger_arg_min(unsigned int *arg,
unsigned int val)
{
if (*arg < val) {
*arg = val;
return -EINVAL;
}
return 0;
}

/**
* cfc_check_trigger_arg_max() - trivially validate a trigger argument
* @arg: pointer to the trigger arg to validate
* @val: the maximum value the argument should be
*/
static inline int cfc_check_trigger_arg_max(unsigned int *arg,
unsigned int val)
{
if (*arg > val) {
*arg = val;
return -EINVAL;
}
return 0;
}

#endif /* _COMEDI_FC_H */

0 comments on commit 61ca8ba

Please sign in to comment.