From: Cryolitia PukNgae <cryoli...@uniontech.com> - int param_array_set(const char *val, const struct kernel_param *kp); - int param_array_get(char *buffer, const struct kernel_param *kp); - void param_array_free(void *arg);
It would be helpful for the new module param we designed in snd_usb_audio, in order to run additional custom codes when params are set in runtime, and re-use the extisted codes in param.c Signed-off-by: Cryolitia PukNgae <cryoli...@uniontech.com> --- include/linux/moduleparam.h | 3 +++ kernel/params.c | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h index 3a25122d83e2802e6e6a1475a52816251498b26a..4ef09ad2004789855bd21783029c653fac94b9dd 100644 --- a/include/linux/moduleparam.h +++ b/include/linux/moduleparam.h @@ -593,6 +593,9 @@ enum hwparam_type { extern const struct kernel_param_ops param_array_ops; +extern int param_array_set(const char *val, const struct kernel_param *kp); +extern int param_array_get(char *buffer, const struct kernel_param *kp); +extern void param_array_free(void *arg); extern const struct kernel_param_ops param_ops_string; extern int param_set_copystring(const char *val, const struct kernel_param *); diff --git a/kernel/params.c b/kernel/params.c index b96cfd693c9968012d42acb85611fee1acd47790..a936e018a1c6d0bf2b6b4566f80751840366f652 100644 --- a/kernel/params.c +++ b/kernel/params.c @@ -462,7 +462,7 @@ static int param_array(struct module *mod, return 0; } -static int param_array_set(const char *val, const struct kernel_param *kp) +int param_array_set(const char *val, const struct kernel_param *kp) { const struct kparam_array *arr = kp->arr; unsigned int temp_num; @@ -471,8 +471,9 @@ static int param_array_set(const char *val, const struct kernel_param *kp) arr->elemsize, arr->ops->set, kp->level, arr->num ?: &temp_num); } +EXPORT_SYMBOL(param_array_set); -static int param_array_get(char *buffer, const struct kernel_param *kp) +int param_array_get(char *buffer, const struct kernel_param *kp) { int i, off, ret; const struct kparam_array *arr = kp->arr; @@ -492,8 +493,9 @@ static int param_array_get(char *buffer, const struct kernel_param *kp) buffer[off] = '\0'; return off; } +EXPORT_SYMBOL(param_array_get); -static void param_array_free(void *arg) +void param_array_free(void *arg) { unsigned int i; const struct kparam_array *arr = arg; @@ -502,6 +504,7 @@ static void param_array_free(void *arg) for (i = 0; i < (arr->num ? *arr->num : arr->max); i++) arr->ops->free(arr->elem + arr->elemsize * i); } +EXPORT_SYMBOL(param_array_free); const struct kernel_param_ops param_array_ops = { .set = param_array_set, -- 2.51.0