2 * sysctl.h: General linux system control interface
4 * Begun 24 March 1995, Stephen Tweedie
6 ****************************************************************
7 ****************************************************************
10 ** The values in this file are exported to user space via
11 ** the sysctl() binary interface. Do *NOT* change the
12 ** numbering of any existing values here, and do not change
13 ** any numbers within any one set of values. If you have
14 ** to redefine an existing interface, use a new number for it.
15 ** The kernel will then return ENOTDIR to any application using
16 ** the old binary interface.
20 ****************************************************************
21 ****************************************************************
24 #ifndef _LINUX_SYSCTL_H
25 #define _LINUX_SYSCTL_H
27 #include <linux/kernel.h>
28 #include <linux/types.h>
29 #include <linux/list.h>
33 #define CTL_MAXNAME 10
35 struct __sysctl_args {
42 unsigned long __unused[4];
45 /* Define sysctl names first */
47 /* Top-level names: */
49 /* For internal pattern-matching use only: */
51 #define CTL_ANY -1 /* Matches any name */
57 CTL_KERN=1, /* General kernel info and control */
58 CTL_VM=2, /* VM management */
59 CTL_NET=3, /* Networking */
60 CTL_PROC=4, /* Process info */
61 CTL_FS=5, /* Filesystems */
62 CTL_DEBUG=6, /* Debugging */
63 CTL_DEV=7, /* Devices */
64 CTL_BUS=8, /* Busses */
65 CTL_ABI=9, /* Binary emulation */
66 CTL_CPU=10 /* CPU stuff (speed scaling, etc) */
78 KERN_OSTYPE=1, /* string: system version */
79 KERN_OSRELEASE=2, /* string: system release */
80 KERN_OSREV=3, /* int: system revision */
81 KERN_VERSION=4, /* string: compile time info */
82 KERN_SECUREMASK=5, /* struct: maximum rights mask */
83 KERN_PROF=6, /* table: profiling information */
87 KERN_CAP_BSET=14, /* int: capability bounding set */
88 KERN_PANIC=15, /* int: panic timeout */
89 KERN_REALROOTDEV=16, /* real root device to mount after initrd */
91 KERN_SPARC_REBOOT=21, /* reboot command on Sparc */
92 KERN_CTLALTDEL=22, /* int: allow ctl-alt-del to reboot */
93 KERN_PRINTK=23, /* struct: control printk logging parameters */
94 KERN_NAMETRANS=24, /* Name translation */
95 KERN_PPC_HTABRECLAIM=25, /* turn htab reclaimation on/off on PPC */
96 KERN_PPC_ZEROPAGED=26, /* turn idle page zeroing on/off on PPC */
97 KERN_PPC_POWERSAVE_NAP=27, /* use nap mode for power saving */
100 KERN_ACCT=30, /* BSD process accounting parameters */
101 KERN_PPC_L2CR=31, /* l2cr register on PPC */
103 KERN_RTSIGNR=32, /* Number of rt sigs queued */
104 KERN_RTSIGMAX=33, /* Max queuable */
106 KERN_SHMMAX=34, /* long: Maximum shared memory segment */
107 KERN_MSGMAX=35, /* int: Maximum size of a messege */
108 KERN_MSGMNB=36, /* int: Maximum message queue size */
109 KERN_MSGPOOL=37, /* int: Maximum system message pool size */
110 KERN_SYSRQ=38, /* int: Sysreq enable */
111 KERN_MAX_THREADS=39, /* int: Maximum nr of threads in the system */
112 KERN_RANDOM=40, /* Random driver */
113 KERN_SHMALL=41, /* int: Maximum size of shared memory */
114 KERN_MSGMNI=42, /* int: msg queue identifiers */
115 KERN_SEM=43, /* struct: sysv semaphore limits */
116 KERN_SPARC_STOP_A=44, /* int: Sparc Stop-A enable */
117 KERN_SHMMNI=45, /* int: shm array identifiers */
118 KERN_OVERFLOWUID=46, /* int: overflow UID */
119 KERN_OVERFLOWGID=47, /* int: overflow GID */
120 KERN_SHMPATH=48, /* string: path to shm fs */
121 KERN_HOTPLUG=49, /* string: path to hotplug policy agent */
122 KERN_IEEE_EMULATION_WARNINGS=50, /* int: unimplemented ieee instructions */
123 KERN_S390_USER_DEBUG_LOGGING=51, /* int: dumps of user faults */
124 KERN_CORE_USES_PID=52, /* int: use core or core.%pid */
125 KERN_TAINTED=53, /* int: various kernel tainted flags */
126 KERN_CADPID=54, /* int: PID of the process to notify on CAD */
127 KERN_CORE_PATTERN=56, /* string: pattern for core-files */
134 VM_SWAPCTL=1, /* struct: Set vm swapping control */
135 VM_SWAPOUT=2, /* int: Linear or sqrt() swapout for hogs */
136 VM_FREEPG=3, /* struct: Set free page thresholds */
137 VM_BDFLUSH=4, /* struct: Control buffer cache flushing */
138 VM_OVERCOMMIT_MEMORY=5, /* Turn off the virtual memory safety limit */
139 VM_BUFFERMEM=6, /* struct: Set buffer memory thresholds */
140 VM_PAGECACHE=7, /* struct: Set cache memory thresholds */
141 VM_PAGERDAEMON=8, /* struct: Control kswapd behaviour */
142 VM_PGT_CACHE=9, /* struct: Set page table cache parameters */
143 VM_PAGE_CLUSTER=10, /* int: set number of pages to swap together */
144 VM_MAX_MAP_COUNT=11, /* int: Maximum number of active map areas */
145 VM_MIN_READAHEAD=12, /* Min file readahead */
146 VM_MAX_READAHEAD=13, /* Max file readahead */
172 /* /proc/sys/kernel/random */
176 RANDOM_ENTROPY_COUNT=2,
177 RANDOM_READ_THRESH=3,
178 RANDOM_WRITE_THRESH=4,
183 /* /proc/sys/bus/isa */
191 /* /proc/sys/net/core */
196 NET_CORE_WMEM_DEFAULT=3,
197 NET_CORE_RMEM_DEFAULT=4,
198 /* was NET_CORE_DESTROY_DELAY */
199 NET_CORE_MAX_BACKLOG=6,
200 NET_CORE_FASTROUTE=7,
202 NET_CORE_MSG_BURST=9,
203 NET_CORE_OPTMEM_MAX=10,
204 NET_CORE_HOT_LIST_LENGTH=11,
205 NET_CORE_DIVERT_VERSION=12,
206 NET_CORE_NO_CONG_THRESH=13,
209 NET_CORE_MOD_CONG=16,
210 NET_CORE_DEV_WEIGHT=17
213 /* /proc/sys/net/ethernet */
215 /* /proc/sys/net/802 */
217 /* /proc/sys/net/unix */
221 NET_UNIX_DESTROY_DELAY=1,
222 NET_UNIX_DELETE_DELAY=2,
223 NET_UNIX_MAX_DGRAM_QLEN=3,
226 /* /proc/sys/net/ipv4 */
229 /* v2.0 compatibile variables */
236 NET_IPV4_FIB_HASH=19,
238 NET_IPV4_TCP_TIMESTAMPS=33,
239 NET_IPV4_TCP_WINDOW_SCALING=34,
240 NET_IPV4_TCP_SACK=35,
241 NET_IPV4_TCP_RETRANS_COLLAPSE=36,
242 NET_IPV4_DEFAULT_TTL=37,
243 NET_IPV4_AUTOCONFIG=38,
244 NET_IPV4_NO_PMTU_DISC=39,
245 NET_IPV4_TCP_SYN_RETRIES=40,
246 NET_IPV4_IPFRAG_HIGH_THRESH=41,
247 NET_IPV4_IPFRAG_LOW_THRESH=42,
248 NET_IPV4_IPFRAG_TIME=43,
249 NET_IPV4_TCP_MAX_KA_PROBES=44,
250 NET_IPV4_TCP_KEEPALIVE_TIME=45,
251 NET_IPV4_TCP_KEEPALIVE_PROBES=46,
252 NET_IPV4_TCP_RETRIES1=47,
253 NET_IPV4_TCP_RETRIES2=48,
254 NET_IPV4_TCP_FIN_TIMEOUT=49,
255 NET_IPV4_IP_MASQ_DEBUG=50,
256 NET_TCP_SYNCOOKIES=51,
259 NET_TCP_SYN_TAILDROP=54,
260 NET_TCP_MAX_SYN_BACKLOG=55,
261 NET_IPV4_LOCAL_PORT_RANGE=56,
262 NET_IPV4_ICMP_ECHO_IGNORE_ALL=57,
263 NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS=58,
264 NET_IPV4_ICMP_SOURCEQUENCH_RATE=59,
265 NET_IPV4_ICMP_DESTUNREACH_RATE=60,
266 NET_IPV4_ICMP_TIMEEXCEED_RATE=61,
267 NET_IPV4_ICMP_PARAMPROB_RATE=62,
268 NET_IPV4_ICMP_ECHOREPLY_RATE=63,
269 NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES=64,
270 NET_IPV4_IGMP_MAX_MEMBERSHIPS=65,
271 NET_TCP_TW_RECYCLE=66,
272 NET_IPV4_ALWAYS_DEFRAG=67,
273 NET_IPV4_TCP_KEEPALIVE_INTVL=68,
274 NET_IPV4_INET_PEER_THRESHOLD=69,
275 NET_IPV4_INET_PEER_MINTTL=70,
276 NET_IPV4_INET_PEER_MAXTTL=71,
277 NET_IPV4_INET_PEER_GC_MINTIME=72,
278 NET_IPV4_INET_PEER_GC_MAXTIME=73,
279 NET_TCP_ORPHAN_RETRIES=74,
280 NET_TCP_ABORT_ON_OVERFLOW=75,
281 NET_TCP_SYNACK_RETRIES=76,
282 NET_TCP_MAX_ORPHANS=77,
283 NET_TCP_MAX_TW_BUCKETS=78,
285 NET_TCP_REORDERING=80,
292 NET_TCP_ADV_WIN_SCALE=87,
293 NET_IPV4_NONLOCAL_BIND=88,
294 NET_IPV4_ICMP_RATELIMIT=89,
295 NET_IPV4_ICMP_RATEMASK=90,
298 NET_TCP_LOW_LATENCY=93
302 NET_IPV4_ROUTE_FLUSH=1,
303 NET_IPV4_ROUTE_MIN_DELAY=2,
304 NET_IPV4_ROUTE_MAX_DELAY=3,
305 NET_IPV4_ROUTE_GC_THRESH=4,
306 NET_IPV4_ROUTE_MAX_SIZE=5,
307 NET_IPV4_ROUTE_GC_MIN_INTERVAL=6,
308 NET_IPV4_ROUTE_GC_TIMEOUT=7,
309 NET_IPV4_ROUTE_GC_INTERVAL=8,
310 NET_IPV4_ROUTE_REDIRECT_LOAD=9,
311 NET_IPV4_ROUTE_REDIRECT_NUMBER=10,
312 NET_IPV4_ROUTE_REDIRECT_SILENCE=11,
313 NET_IPV4_ROUTE_ERROR_COST=12,
314 NET_IPV4_ROUTE_ERROR_BURST=13,
315 NET_IPV4_ROUTE_GC_ELASTICITY=14,
316 NET_IPV4_ROUTE_MTU_EXPIRES=15,
317 NET_IPV4_ROUTE_MIN_PMTU=16,
318 NET_IPV4_ROUTE_MIN_ADVMSS=17
323 NET_PROTO_CONF_ALL=-2,
324 NET_PROTO_CONF_DEFAULT=-3
326 /* And device ifindices ... */
331 NET_IPV4_CONF_FORWARDING=1,
332 NET_IPV4_CONF_MC_FORWARDING=2,
333 NET_IPV4_CONF_PROXY_ARP=3,
334 NET_IPV4_CONF_ACCEPT_REDIRECTS=4,
335 NET_IPV4_CONF_SECURE_REDIRECTS=5,
336 NET_IPV4_CONF_SEND_REDIRECTS=6,
337 NET_IPV4_CONF_SHARED_MEDIA=7,
338 NET_IPV4_CONF_RP_FILTER=8,
339 NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE=9,
340 NET_IPV4_CONF_BOOTP_RELAY=10,
341 NET_IPV4_CONF_LOG_MARTIANS=11,
342 NET_IPV4_CONF_TAG=12,
343 NET_IPV4_CONF_ARPFILTER=13,
344 NET_IPV4_CONF_MEDIUM_ID=14,
347 /* /proc/sys/net/ipv6 */
353 NET_IPV6_BINDV6ONLY=20
357 NET_IPV6_ROUTE_FLUSH=1,
358 NET_IPV6_ROUTE_GC_THRESH=2,
359 NET_IPV6_ROUTE_MAX_SIZE=3,
360 NET_IPV6_ROUTE_GC_MIN_INTERVAL=4,
361 NET_IPV6_ROUTE_GC_TIMEOUT=5,
362 NET_IPV6_ROUTE_GC_INTERVAL=6,
363 NET_IPV6_ROUTE_GC_ELASTICITY=7,
364 NET_IPV6_ROUTE_MTU_EXPIRES=8,
365 NET_IPV6_ROUTE_MIN_ADVMSS=9
369 NET_IPV6_FORWARDING=1,
370 NET_IPV6_HOP_LIMIT=2,
372 NET_IPV6_ACCEPT_RA=4,
373 NET_IPV6_ACCEPT_REDIRECTS=5,
375 NET_IPV6_DAD_TRANSMITS=7,
376 NET_IPV6_RTR_SOLICITS=8,
377 NET_IPV6_RTR_SOLICIT_INTERVAL=9,
378 NET_IPV6_RTR_SOLICIT_DELAY=10
381 /* /proc/sys/net/ipv6/icmp */
383 NET_IPV6_ICMP_RATELIMIT=1
386 /* /proc/sys/net/<protocol>/neigh/<dev> */
388 NET_NEIGH_MCAST_SOLICIT=1,
389 NET_NEIGH_UCAST_SOLICIT=2,
390 NET_NEIGH_APP_SOLICIT=3,
391 NET_NEIGH_RETRANS_TIME=4,
392 NET_NEIGH_REACHABLE_TIME=5,
393 NET_NEIGH_DELAY_PROBE_TIME=6,
394 NET_NEIGH_GC_STALE_TIME=7,
395 NET_NEIGH_UNRES_QLEN=8,
396 NET_NEIGH_PROXY_QLEN=9,
397 NET_NEIGH_ANYCAST_DELAY=10,
398 NET_NEIGH_PROXY_DELAY=11,
399 NET_NEIGH_LOCKTIME=12,
400 NET_NEIGH_GC_INTERVAL=13,
401 NET_NEIGH_GC_THRESH1=14,
402 NET_NEIGH_GC_THRESH2=15,
403 NET_NEIGH_GC_THRESH3=16
406 /* /proc/sys/net/ipx */
408 NET_IPX_PPROP_BROADCASTING=1,
413 /* /proc/sys/net/appletalk */
415 NET_ATALK_AARP_EXPIRY_TIME=1,
416 NET_ATALK_AARP_TICK_TIME=2,
417 NET_ATALK_AARP_RETRANSMIT_LIMIT=3,
418 NET_ATALK_AARP_RESOLVE_TIME=4
422 /* /proc/sys/net/netrom */
424 NET_NETROM_DEFAULT_PATH_QUALITY=1,
425 NET_NETROM_OBSOLESCENCE_COUNT_INITIALISER=2,
426 NET_NETROM_NETWORK_TTL_INITIALISER=3,
427 NET_NETROM_TRANSPORT_TIMEOUT=4,
428 NET_NETROM_TRANSPORT_MAXIMUM_TRIES=5,
429 NET_NETROM_TRANSPORT_ACKNOWLEDGE_DELAY=6,
430 NET_NETROM_TRANSPORT_BUSY_DELAY=7,
431 NET_NETROM_TRANSPORT_REQUESTED_WINDOW_SIZE=8,
432 NET_NETROM_TRANSPORT_NO_ACTIVITY_TIMEOUT=9,
433 NET_NETROM_ROUTING_CONTROL=10,
434 NET_NETROM_LINK_FAILS_COUNT=11
437 /* /proc/sys/net/ax25 */
439 NET_AX25_IP_DEFAULT_MODE=1,
440 NET_AX25_DEFAULT_MODE=2,
441 NET_AX25_BACKOFF_TYPE=3,
442 NET_AX25_CONNECT_MODE=4,
443 NET_AX25_STANDARD_WINDOW=5,
444 NET_AX25_EXTENDED_WINDOW=6,
445 NET_AX25_T1_TIMEOUT=7,
446 NET_AX25_T2_TIMEOUT=8,
447 NET_AX25_T3_TIMEOUT=9,
448 NET_AX25_IDLE_TIMEOUT=10,
451 NET_AX25_PROTOCOL=13,
452 NET_AX25_DAMA_SLAVE_TIMEOUT=14
455 /* /proc/sys/net/rose */
457 NET_ROSE_RESTART_REQUEST_TIMEOUT=1,
458 NET_ROSE_CALL_REQUEST_TIMEOUT=2,
459 NET_ROSE_RESET_REQUEST_TIMEOUT=3,
460 NET_ROSE_CLEAR_REQUEST_TIMEOUT=4,
461 NET_ROSE_ACK_HOLD_BACK_TIMEOUT=5,
462 NET_ROSE_ROUTING_CONTROL=6,
463 NET_ROSE_LINK_FAIL_TIMEOUT=7,
465 NET_ROSE_WINDOW_SIZE=9,
466 NET_ROSE_NO_ACTIVITY_TIMEOUT=10
469 /* /proc/sys/net/x25 */
471 NET_X25_RESTART_REQUEST_TIMEOUT=1,
472 NET_X25_CALL_REQUEST_TIMEOUT=2,
473 NET_X25_RESET_REQUEST_TIMEOUT=3,
474 NET_X25_CLEAR_REQUEST_TIMEOUT=4,
475 NET_X25_ACK_HOLD_BACK_TIMEOUT=5
478 /* /proc/sys/net/token-ring */
484 /* /proc/sys/net/decnet/ */
486 NET_DECNET_NODE_TYPE = 1,
487 NET_DECNET_NODE_ADDRESS = 2,
488 NET_DECNET_NODE_NAME = 3,
489 NET_DECNET_DEFAULT_DEVICE = 4,
490 NET_DECNET_TIME_WAIT = 5,
491 NET_DECNET_DN_COUNT = 6,
492 NET_DECNET_DI_COUNT = 7,
493 NET_DECNET_DR_COUNT = 8,
494 NET_DECNET_DST_GC_INTERVAL = 9,
495 NET_DECNET_CONF = 10,
496 NET_DECNET_NO_FC_MAX_CWND = 11,
497 NET_DECNET_DEBUG_LEVEL = 255
500 /* /proc/sys/net/khttpd/ */
502 NET_KHTTPD_DOCROOT = 1,
503 NET_KHTTPD_START = 2,
505 NET_KHTTPD_UNLOAD = 4,
506 NET_KHTTPD_CLIENTPORT = 5,
507 NET_KHTTPD_PERMREQ = 6,
508 NET_KHTTPD_PERMFORBID = 7,
509 NET_KHTTPD_LOGGING = 8,
510 NET_KHTTPD_SERVERPORT = 9,
511 NET_KHTTPD_DYNAMICSTRING= 10,
512 NET_KHTTPD_SLOPPYMIME = 11,
513 NET_KHTTPD_THREADS = 12,
514 NET_KHTTPD_MAXCONNECT = 13
517 /* /proc/sys/net/decnet/conf/<dev> */
519 NET_DECNET_CONF_LOOPBACK = -2,
520 NET_DECNET_CONF_DDCMP = -3,
521 NET_DECNET_CONF_PPP = -4,
522 NET_DECNET_CONF_X25 = -5,
523 NET_DECNET_CONF_GRE = -6,
524 NET_DECNET_CONF_ETHER = -7
526 /* ... and ifindex of devices */
529 /* /proc/sys/net/decnet/conf/<dev>/ */
531 NET_DECNET_CONF_DEV_PRIORITY = 1,
532 NET_DECNET_CONF_DEV_T1 = 2,
533 NET_DECNET_CONF_DEV_T2 = 3,
534 NET_DECNET_CONF_DEV_T3 = 4,
535 NET_DECNET_CONF_DEV_FORWARDING = 5,
536 NET_DECNET_CONF_DEV_BLKSIZE = 6,
537 NET_DECNET_CONF_DEV_STATE = 7
540 /* CTL_PROC names: */
545 FS_NRINODE=1, /* int:current number of allocated inodes */
547 FS_MAXINODE=3, /* int:maximum number of inodes that can be allocated */
548 FS_NRDQUOT=4, /* int:current number of allocated dquots */
549 FS_MAXDQUOT=5, /* int:maximum number of dquots that can be allocated */
550 FS_NRFILE=6, /* int:current number of allocated filedescriptors */
551 FS_MAXFILE=7, /* int:maximum number of filedescriptors that can be allocated */
553 FS_NRSUPER=9, /* int:current number of allocated super_blocks */
554 FS_MAXSUPER=10, /* int:maximum number of super_blocks that can be allocated */
555 FS_OVERFLOWUID=11, /* int: overflow UID */
556 FS_OVERFLOWGID=12, /* int: overflow GID */
557 FS_LEASES=13, /* int: leases enabled */
558 FS_DIR_NOTIFY=14, /* int: directory notification enabled */
559 FS_LEASE_TIME=15, /* int: maximum time to wait for a lease break */
562 /* CTL_DEBUG names: */
573 /* /proc/sys/dev/cdrom */
576 DEV_CDROM_AUTOCLOSE=2,
577 DEV_CDROM_AUTOEJECT=3,
580 DEV_CDROM_CHECK_MEDIA=6
583 /* /proc/sys/dev/parport */
585 DEV_PARPORT_DEFAULT=-3
588 /* /proc/sys/dev/raid */
590 DEV_RAID_SPEED_LIMIT_MIN=1,
591 DEV_RAID_SPEED_LIMIT_MAX=2
594 /* /proc/sys/dev/parport/default */
596 DEV_PARPORT_DEFAULT_TIMESLICE=1,
597 DEV_PARPORT_DEFAULT_SPINTIME=2
600 /* /proc/sys/dev/parport/parport n */
602 DEV_PARPORT_SPINTIME=1,
603 DEV_PARPORT_BASE_ADDR=2,
607 DEV_PARPORT_DEVICES=6,
608 DEV_PARPORT_AUTOPROBE=16
611 /* /proc/sys/dev/parport/parport n/devices/ */
613 DEV_PARPORT_DEVICES_ACTIVE=-3,
616 /* /proc/sys/dev/parport/parport n/devices/device n */
618 DEV_PARPORT_DEVICE_TIMESLICE=1,
621 /* /proc/sys/dev/mac_hid */
623 DEV_MAC_HID_KEYBOARD_SENDS_LINUX_KEYCODES=1,
624 DEV_MAC_HID_KEYBOARD_LOCK_KEYCODES=2,
625 DEV_MAC_HID_MOUSE_BUTTON_EMULATION=3,
626 DEV_MAC_HID_MOUSE_BUTTON2_KEYCODE=4,
627 DEV_MAC_HID_MOUSE_BUTTON3_KEYCODE=5,
628 DEV_MAC_HID_ADB_MOUSE_SENDS_KEYCODES=6
634 ABI_DEFHANDLER_COFF=1, /* default handler for coff binaries */
635 ABI_DEFHANDLER_ELF=2, /* default handler for ELF binaries */
636 ABI_DEFHANDLER_LCALL7=3,/* default handler for procs using lcall7 */
637 ABI_DEFHANDLER_LIBCSO=4,/* default handler for an libc.so ELF interp */
638 ABI_TRACE=5, /* tracing flags */
639 ABI_FAKE_UTSNAME=6, /* fake target utsname information */
644 extern asmlinkage long sys_sysctl(struct __sysctl_args *);
645 extern void sysctl_init(void);
647 typedef struct ctl_table ctl_table;
649 typedef int ctl_handler (ctl_table *table, int *name, int nlen,
650 void *oldval, size_t *oldlenp,
651 void *newval, size_t newlen,
654 typedef int proc_handler (ctl_table *ctl, int write, struct file * filp,
655 void *buffer, size_t *lenp);
657 extern int proc_dostring(ctl_table *, int, struct file *,
659 extern int proc_dointvec(ctl_table *, int, struct file *,
661 extern int proc_dointvec_bset(ctl_table *, int, struct file *,
663 extern int proc_dointvec_minmax(ctl_table *, int, struct file *,
665 extern int proc_dointvec_jiffies(ctl_table *, int, struct file *,
667 extern int proc_doulongvec_minmax(ctl_table *, int, struct file *,
669 extern int proc_doulongvec_ms_jiffies_minmax(ctl_table *table, int,
670 struct file *, void *, size_t *);
672 extern int do_sysctl (int *name, int nlen,
673 void *oldval, size_t *oldlenp,
674 void *newval, size_t newlen);
676 extern int do_sysctl_strategy (ctl_table *table,
678 void *oldval, size_t *oldlenp,
679 void *newval, size_t newlen, void ** context);
681 extern ctl_handler sysctl_string;
682 extern ctl_handler sysctl_intvec;
683 extern ctl_handler sysctl_jiffies;
687 * Register a set of sysctl names by calling register_sysctl_table
688 * with an initialised array of ctl_table's. An entry with zero
689 * ctl_name terminates the table. table->de will be set up by the
690 * registration and need not be initialised in advance.
692 * sysctl names can be mirrored automatically under /proc/sys. The
693 * procname supplied controls /proc naming.
695 * The table's mode will be honoured both for sys_sysctl(2) and
698 * Leaf nodes in the sysctl tree will be represented by a single file
699 * under /proc; non-leaf nodes will be represented by directories. A
700 * null procname disables /proc mirroring at this node.
702 * sysctl(2) can automatically manage read and write requests through
703 * the sysctl table. The data and maxlen fields of the ctl_table
704 * struct enable minimal validation of the values being written to be
705 * performed, and the mode field allows minimal authentication.
707 * More sophisticated management can be enabled by the provision of a
708 * strategy routine with the table entry. This will be called before
709 * any automatic read or write of the data is performed.
711 * The strategy routine may return:
712 * <0: Error occurred (error is passed to user process)
713 * 0: OK - proceed with automatic read or write.
714 * >0: OK - read or write has been done by the strategy routine, so
715 * return immediately.
717 * There must be a proc_handler routine for any terminal nodes
718 * mirrored under /proc/sys (non-terminals are handled by a built-in
719 * directory handler). Several default handlers are available to
720 * cover common cases.
723 /* A sysctl table is an array of struct ctl_table: */
726 int ctl_name; /* Binary ID */
727 const char *procname; /* Text ID for /proc/sys, or zero */
732 proc_handler *proc_handler; /* Callback for text formatting */
733 ctl_handler *strategy; /* Callback function for all r/w */
734 struct proc_dir_entry *de; /* /proc control block */
739 /* struct ctl_table_header is used to maintain dynamic lists of
741 struct ctl_table_header
743 ctl_table *ctl_table;
744 struct list_head ctl_entry;
747 struct ctl_table_header * register_sysctl_table(ctl_table * table,
749 void unregister_sysctl_table(struct ctl_table_header * table);
751 #else /* __KERNEL__ */
753 #endif /* __KERNEL__ */
755 #endif /* _LINUX_SYSCTL_H */