Commit 61ca8bac authored by H Hartley Sweeten's avatar H Hartley Sweeten Committed by Greg Kroah-Hartman

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: default avatarH Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Ian Abbott <abbotti@mev.co.uk>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 1f168dbd
...@@ -105,4 +105,48 @@ static inline int cfc_check_trigger_is_unique(unsigned int src) ...@@ -105,4 +105,48 @@ static inline int cfc_check_trigger_is_unique(unsigned int src)
return 0; 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 */ #endif /* _COMEDI_FC_H */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment