sysctl: add proc_dointvec_bool handler
Add proc_dointvec_bool sysctl handler for cases value is limited to 0 and 1
Signed-off-by Dave Young <[email protected]>
--- include/linux/sysctl.h | 2 ++ kernel/sysctl.c | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+)
kernel/sysctl.c +27 -0
@@ -2448,6 +2448,33 @@ int proc_dointvec_minmax(struct ctl_tabl do_proc_dointvec_minmax_conv, ¶m); } +/** +* proc_dointvec_bool - read a vector of integers with 0/1 values +* @table: the sysctl table +* @write: %TRUE if this is a write to the sysctl file +* @buffer: the user buffer +* @lenp: the size of the user buffer +* @ppos: file position +* +* Reads/writes up to table->maxlen/sizeof(unsigned int) integer +* values from/to the user buffer, treated as an ASCII string. +* +* This routine will ensure the values are either 0 or 1. +* +* Returns 0 on success. +*/ +int proc_dointvec_bool (struct ctl_table *table,int write, +void __user *buffer,size_t *lenp,loff_t *ppos) +{ +struct do_proc_dointvec_minmax_conv_param param = { + .min = &zero, + .max = &one, + }; +return do_proc_dointvec (table, write, buffer, lenp, ppos, + do_proc_dointvec_minmax_conv, ¶m); +} +EXPORT_SYMBOL (proc_dointvec_bool); + static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos,
include/linux/sysctl.h +2 -0
@@ -970,6 +970,8 @@ extern int proc_dointvec(struct ctl_tabl void __user *, size_t *, loff_t *);extern int proc_dointvec_minmax (struct ctl_table *,int ,void __user *,size_t *,loff_t *); +extern int proc_dointvec_bool (struct ctl_table *,int , +void __user *,size_t *,loff_t *);extern int proc_dointvec_jiffies (struct ctl_table *,int ,void __user *,size_t *,loff_t *); extern int proc_dointvec_userhz_jiffies(struct ctl_table *, int,
kernel/sysctl.c 2011-03-03 11:15:52.196661447 +0800
Quoted 10 lines · Dave Young
Add
proc_dointvec_boolsysctl handler for cases value is limited to 0 and 1Signed-off-by Dave Young <[email protected]>---
include/linux/sysctl.h | 2 ++
kernel/sysctl.c | 27 +++++++++++++++++++++++++++2 files changed, 29 insertions(+)kernel/sysctl.c 2011-03-03 11:15:52.196661447 +0800 renamed from kernel/sysctl.c 2011-03-03 11:13:01.986661838 +0800 +0
-0
This one is PATCH 01/04, I missed the info in subject
Signature · 2 lines
Regards dave