dynamic添加条目到sysctl

考虑这个代码:

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/