考虑这个代码:
int procmon_state = 0; static struct ctl_table_header *procmon_table_header; static ctl_table state_table[] = { { .procname = "state", .mode = 0666, .proc_handler = &proc_dointvec_minmax, .data = &procmon_state, .maxlen = sizeof(int), .extra1 = "\x00\x00\x00\x00" /*0*/, .extra2 = "\x01\x00\x00\x00" /*1*/ }, { 0 } }; static ctl_table procmon_table[] = { { .procname = "procmon", .mode = 0555, .child = state_table }, { 0 } }; procmon_table_header = register_sysctl_table(procmon_table);
这将在/proc/sys
创build一个条目(所以我可以只是sysctl procmon.state=1
)。
我的问题是:一旦创build该条目,我怎样才能添加更多的条目?
编辑:在procmon
内更多的条目,就是。 例如, procmon.another_state
sysctl.h中没有改变sysctl表的功能 。
在调用register_sysctl_table
之前 ,必须列出所有可能需要的条目。
如果您确实需要更改表格,则必须在修改之前先调用unregister_sysctl_table
,然后重新注册。
是的,你可以看看很多例子的Linux内核驱动程序目录。 实质上,您只需要多次调用register_sysctl_table(),对于每次调用,您都将创建一个现有分支的分支。
这里详细介绍:
https://tthtlc.wordpress.com/2016/05/26/how-to-add-new-entries-to-sysctl-with-the-same-root/