/proc/sys/kernel/* entry creation You have to modify the Linux source code. Here we use 2.6.23. 1. Add an entry to the kern_table array in kernel/sysctl.c as following ... { .ctl_name = KERN_MYEVENT_HANDLER,//Define in // inclue/linux/sysctl.h .procname = "myevent_handler", .data = &myevent_handler, .maxlen = 256,//memory block size pointed by myevent_handler .mode = 0644, .proc_handler = &proc_dostring, .strategy = &sysctl_string, }, ... In the same file, add the following lines. char myevent_handler[256] = '/0';//defined by joseph EXPORT_SYMBOL(myevent_handler); 2. In 'include/linux/sysctl.h' #define KERN_MYEVENT_HANDLER 9527 // defined by Joseph for test extern char myevent_handler[256]; 3. recompile the linux kernel and install it. Then when reboot you can find 'myevent_handler' option in '/proc/sys/linux' directory. addtional info: struct ctl_table { int ctl_name; /* Binary ID */ const char *procname; /* Text ID for /proc/sys, or zero */ void *data; // address of 'procname' int maxlen;//memory block size pointed by myevent_handler mode_t mode; ctl_table *child; // ctl_table *parent; /* Automatically set */ proc_handler *proc_handler; /* Callback for text formatting */ // it will be called when you read files under /proc/sys ctl_handler *strategy; /* Callback function for all r/w */ //This will be called when 'sysctl' is called to read or write system void *extra1; void *extra2; }; To get more information please visit: http://blog.csdn.net/shiniji_hh1126/archive/2010/12/06/6058148.aspx