root:/proc/sys/kernel/pty# ls
max nr reserve
static int pty_limit_min;
static int pty_limit_max = NR_UNIX98_PTY_MAX;
static int tty_count;
static int pty_count;
static inline void pty_inc_count(void)
{
pty_count = (++tty_count) / 2;
}
static inline void pty_dec_count(void)
{
pty_count = (--tty_count) / 2;
}
static struct ctl_table pty_table[] = {
{
.procname = "max",
.maxlen = sizeof(int),
.mode = 0644,
.data = &pty_limit,
.proc_handler = proc_dointvec_minmax,
.extra1 = &pty_limit_min,
.extra2 = &pty_limit_max,
}, {
.procname = "nr",
.maxlen = sizeof(int),
.mode = 0444,
.data = &pty_count,
.proc_handler = proc_dointvec,
},
{}
};
static struct ctl_table pty_kern_table[] = {
{
.procname = "pty",
.mode = 0555,
.child = pty_table,
},
{}
};
static struct ctl_table_header *ctl_table_header;
ctl_table_header=register_sysctl_table(pty_root_table);
unregister_sysctl_table(ctl_table_header);
/////////////////////////////////////////////////////////////////////////
#include <linux/module.h>
static struct ctl_table_header *ctl_table_test_header;
unsigned int sysctl_test_int;
char sysctl_test_string[256];
static struct ctl_table ctl_table_test[] = {
{
.procname = "test_int",
.data = &sysctl_test_int,
.maxlen = sizeof(unsigned int),
.mode = 0777,
.proc_handler = proc_dointvec,
},
{
.procname = "test_string",
.data = sysctl_test_string,
.maxlen = 255,
.mode = 0777,
.proc_handler = proc_dostring,
},
{}
};
static struct ctl_table ctl_table_test_root[] = {
{
.procname = "test_root",
.mode = 0555,
.child = ctl_table_test,
},
{}
};
static int __init test_init(void)
{
ctl_table_test_header = register_sysctl_table(ctl_table_test_root);
if (!ctl_table_test_header) {
printk("ctl_table_test_header error\n");
}
return 0;
}
static void __exit test_exit(void)
{
if (ctl_table_test_header)
unregister_sysctl_table(ctl_table_test_header);
}
module_init(test_init);
module_exit(test_exit);
MODULE_AUTHOR("tony");
MODULE_DESCRIPTION("test");
MODULE_LICENSE("GPL");
MODULE_ALIAS("test");