staging: comedi: comedi_fc.h: introduce new helpers for do_cmdtest step 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>
This commit is contained in:
parent
1f168dbdf7
commit
61ca8bac45
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue