On Fri, Aug 13, 2021 at 9:44 AM Andy Shevchenko andriy.shevchenko@linux.intel.com wrote:
On Fri, Aug 13, 2021 at 09:17:10AM -0600, Jim Cromie wrote:
Add a const void* data member to the struct, to allow attaching private data that will be used soon by a setter method (via kp->data) to perform more elaborate actions.
To attach the data at compile time, add new macros:
module_param_cbd() derives from module_param_cb(), adding data param, and latter is redefined to use former.
It calls __module_param_call_wdata(), which accepts a new data param and inits .data with it. Re-define __module_param_call() to use it.
Use of this new data member will be rare, it might be worth redoing this as a separate/sub-type to de-bloat the base case.
...
+#define module_param_cbd(name, ops, arg, perm, data) \
__module_param_call_wdata(MODULE_PARAM_PREFIX, name, ops, arg, perm, -1, 0, data)
Cryptic name. Moreover, inconsistent with the rest. What about module_param_cb_data() ?
#define module_param_cb_unsafe(name, ops, arg, perm) \ __module_param_call(MODULE_PARAM_PREFIX, name, ops, arg, perm, -1, \ KERNEL_PARAM_FL_UNSAFE)
(above left for the above comment)
...
+#define __module_param_call_wdata(prefix, name, ops, arg, perm, level, flags, data) \
Similar __module_param_call_with_data()
-- With Best Regards, Andy Shevchenko
yes to all renames, revised. thanks