2013-11-23 82 views
4

考慮以下代碼:動態添加條目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一個條目(所以我可以那麼就sysctl procmon.state=1)。

我的問題是:一旦創建了該條目,如何添加更多條目?

編輯:procmon內更多的條目,也就是說。例如,procmon.another_state

+0

是'register_sysctl_paths'幫助嗎? –

+0

我會看'proc_create_data()'。 –

+0

的確,'''register_sysctl_paths'''可能會有所幫助。我會看看它,謝謝!另一方面,'''proc_create_data'''太近了(僅限3.10+),即使我希望我不能使用它。 – alexandernst

回答

2

sysctl.h中沒有更改sysctl表的功能。

您必須列出您可能需要的所有條目之前致電register_sysctl_table

如果您確實需要更改表格後,您必須在修改之前致電unregister_sysctl_table,然後重新註冊。