Message ID | 20210731214211.657280-3-jim.cromie@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm: use dyndbg in drm_print | expand |
Hi Jim, On Sat, 31 Jul 2021 at 22:42, Jim Cromie <jim.cromie@gmail.com> wrote: > Use of this new data member will be rare, it might be worth redoing > this as a separate/sub-type to keep the base case. > > Signed-off-by: Jim Cromie <jim.cromie@gmail.com> > --- > include/linux/moduleparam.h | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h > index eed280fae433..e9495b1e794d 100644 > --- a/include/linux/moduleparam.h > +++ b/include/linux/moduleparam.h > @@ -78,6 +78,7 @@ struct kernel_param { > const struct kparam_string *str; > const struct kparam_array *arr; > }; > + void *data; Might as well make this "const void *" since it is a compile-time constant? -Emil
On Mon, Aug 2, 2021 at 10:18 AM Emil Velikov <emil.l.velikov@gmail.com> wrote: > > Hi Jim, > > On Sat, 31 Jul 2021 at 22:42, Jim Cromie <jim.cromie@gmail.com> wrote: > > > Use of this new data member will be rare, it might be worth redoing > > this as a separate/sub-type to keep the base case. > > > > Signed-off-by: Jim Cromie <jim.cromie@gmail.com> > > --- > > include/linux/moduleparam.h | 11 +++++++++-- > > 1 file changed, 9 insertions(+), 2 deletions(-) > > > > diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h > > index eed280fae433..e9495b1e794d 100644 > > --- a/include/linux/moduleparam.h > > +++ b/include/linux/moduleparam.h > > @@ -78,6 +78,7 @@ struct kernel_param { > > const struct kparam_string *str; > > const struct kparam_array *arr; > > }; > > + void *data; > > Might as well make this "const void *" since it is a compile-time constant? > yes indeed. revising. thanks > -Emil
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h index eed280fae433..e9495b1e794d 100644 --- a/include/linux/moduleparam.h +++ b/include/linux/moduleparam.h @@ -78,6 +78,7 @@ struct kernel_param { const struct kparam_string *str; const struct kparam_array *arr; }; + void *data; }; extern const struct kernel_param __start___param[], __stop___param[]; @@ -175,6 +176,9 @@ struct kparam_array #define module_param_cb(name, ops, arg, perm) \ __module_param_call(MODULE_PARAM_PREFIX, name, ops, arg, perm, -1, 0) +#define module_param_cbd(name, ops, arg, perm, data) \ + __module_param_call_wdata(MODULE_PARAM_PREFIX, name, ops, arg, perm, -1, 0, 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) @@ -284,14 +288,17 @@ struct kparam_array /* This is the fundamental function for registering boot/module parameters. */ -#define __module_param_call(prefix, name, ops, arg, perm, level, flags) \ +#define __module_param_call(prefix, name, ops, arg, perm, level, flags) \ + __module_param_call_wdata(prefix, name, ops, arg, perm, level, flags, NULL) + +#define __module_param_call_wdata(prefix, name, ops, arg, perm, level, flags, data) \ /* Default value instead of permissions? */ \ static const char __param_str_##name[] = prefix #name; \ static struct kernel_param __moduleparam_const __param_##name \ __used __section("__param") \ __aligned(__alignof__(struct kernel_param)) \ = { __param_str_##name, THIS_MODULE, ops, \ - VERIFY_OCTAL_PERMISSIONS(perm), level, flags, { arg } } + VERIFY_OCTAL_PERMISSIONS(perm), level, flags, { arg }, data } /* Obsolete - use module_param_cb() */ #define module_param_call(name, _set, _get, arg, perm) \
Add a 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. It calls __module_param_call_wdata(), which has accepts new data param and inits .data with it. Re-define __module_param_call() using it. Use of this new data member will be rare, it might be worth redoing this as a separate/sub-type to keep the base case. Signed-off-by: Jim Cromie <jim.cromie@gmail.com> --- include/linux/moduleparam.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-)