Name

register_sysctl_table — register a sysctl hierarchy

Synopsis

struct ctl_table_header * register_sysctl_table (ctl_table *  table,
 int  insert_at_head);

Arguments

table

the top-level table structure

insert_at_head

whether the entry should be inserted in front or at the end

Description

Register a sysctl table hierarchy. table should be a filled in ctl_table array. An entry with a ctl_name of 0 terminates the table.

The members of the &ctl_table structure are used as follows:

ctl_name - This is the numeric sysctl value used by sysctl(2). The number must be unique within that level of sysctl

procname - the name of the sysctl file under /proc/sys. Set to NULL to not enter a sysctl file

data - a pointer to data for use by proc_handler

maxlen - the maximum size in bytes of the data

mode - the file permissions for the /proc/sys file, and for sysctl(2)

child - a pointer to the child sysctl table if this entry is a directory, or NULL.

proc_handler - the text handler routine (described below)

strategy - the strategy routine (described below)

de - for internal use by the sysctl routines

extra1, extra2 - extra pointers usable by the proc handler routines

Leaf nodes in the sysctl tree will be represented by a single file under /proc; non-leaf nodes will be represented by directories.

sysctl(2) can automatically manage read and write requests through the sysctl table. The data and maxlen fields of the ctl_table struct enable minimal validation of the values being written to be performed, and the mode field allows minimal authentication.

More sophisticated management can be enabled by the provision of a strategy routine with the table entry. This will be called before any automatic read or write of the data is performed.

The strategy routine may return

< 0 - Error occurred (error is passed to user process)

0 - OK - proceed with automatic read or write.

> 0 - OK - read or write has been done by the strategy routine, so return immediately.

There must be a proc_handler routine for any terminal nodes mirrored under /proc/sys (non-terminals are handled by a built-in directory handler). Several default handlers are available to cover common cases -

proc_dostring, proc_dointvec, proc_dointvec_jiffies, proc_dointvec_userhz_jiffies, proc_dointvec_minmax, proc_doulongvec_ms_jiffies_minmax, proc_doulongvec_minmax

It is the handler's job to read the input buffer from user memory and process it. The handler should return 0 on success.

This routine returns NULL on a failure to register, and a pointer to the table header on success.