All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 04/05] sysctl: add proc_dointvec_unsigned handler
@ 2011-03-03 14:01 Dave Young
  0 siblings, 0 replies; only message in thread
From: Dave Young @ 2011-03-03 14:01 UTC (permalink / raw)
  To: Andrew Morton, Ingo Molnar, David Miller, Don Zickus, linux-kernel

Add proc_dointvec_unsigned sysctl handler for positive value cases

Signed-off-by: Dave Young <hidave.darkstar@gmail.com>
---
 include/linux/sysctl.h |    2 ++
 kernel/sysctl.c        |   26 ++++++++++++++++++++++++++
 2 files changed, 28 insertions(+)

--- linux-2.6.orig/kernel/sysctl.c	2011-03-03 11:17:21.796661240 +0800
+++ linux-2.6/kernel/sysctl.c	2011-03-03 11:17:39.126661201 +0800
@@ -2459,6 +2459,32 @@ int proc_dointvec_bool(struct ctl_table 
 }
 EXPORT_SYMBOL(proc_dointvec_bool);
 
+/**
+ * proc_dointvec_unsigned - read a vector of integers with positive 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 positive.
+ *
+ * Returns 0 on success.
+ */
+int proc_dointvec_unsigned(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,
+	};
+	return do_proc_dointvec(table, write, buffer, lenp, ppos,
+				do_proc_dointvec_minmax_conv, &param);
+}
+EXPORT_SYMBOL(proc_dointvec_unsigned);
+
 static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int write,
 				     void __user *buffer,
 				     size_t *lenp, loff_t *ppos,
--- linux-2.6.orig/include/linux/sysctl.h	2011-03-03 11:16:16.000000000 +0800
+++ linux-2.6/include/linux/sysctl.h	2011-03-03 11:18:15.529994450 +0800
@@ -972,6 +972,8 @@ extern int proc_dointvec_minmax(struct c
 				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_unsigned(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,

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2011-03-03 14:01 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-03 14:01 [PATCH 04/05] sysctl: add proc_dointvec_unsigned handler Dave Young

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.