3.10 以上内核创建proc文件的问题
我的内核版本是3.11.0-15-generic我现在想在/proc/sys/net/netfilter里面创建一个文件。我用proc_create函数的时候,proc_dir_entry 参数该怎么设置呢? 楼主解决这个问题了吗 我也碰到这个问题了 回复 1# archangle
你们不能什么不会就直接上来问,Linux不是Windows,不会什么都有教程,都要写得清清楚楚。
这种没法用一两句话说清楚,但又不是什么很难的问题,是很少有人理会的!!!
要学Linux,就要学会自己看代码,自己去学习,要说Linux最大的学习方法,就是RTFSC(Read the fucking source code)!
内核里头有大量的参考代码,要先学会查找、仿照。
你搜搜关键字,就会发现/proc/sys/net/netfilter不是由create_proc创建的!!!! 用的是sysctl!!!! 然后自己去百度一下就会有很多的教程!
至于在现成的目录低下去建文件,方法就是多仿照,多试验。因为网上的例子都是建一个全新的目录的。
我仿照的就是cdrom.c文件,至于试验,至少我没有写个测试案例以前,我也不确定走得通。
下面的代码在 Linux 3.1.0-7.fc16.i686.PAE下测试通过。#include <linux/init.h>
#include <linux/module.h>
#include <linux/sysctl.h>
#include <linux/stat.h>
MODULE_LICENSE("GPL");
static int MyNewEntry = 0;
static struct ctl_table_header *root_header;
static struct ctl_table my_table[] = {
{
.procname = "MyNewEntry",
.mode = 0644,
.data = & MyNewEntry,
.maxlen = sizeof(int),
.proc_handler = &proc_dointvec
},
{.procname = 0}
};
static struct ctl_table net_table[] = {
{
.procname = "netfilter",
.mode = 0555,
.child = my_table,
},
{.procname = 0}
};
static struct ctl_table root_table[] = {
{
.procname = "net",
.mode = 0555,
.child = net_table,
},
{.procname = 0}
};
struct proc_dir_entry *myproc = NULL;
static int procfile_init(void)
{
printk("procfile enter\n");
root_header = register_sysctl_table(root_table);
return 0;
}
static void procfile_exit(void)
{
printk("procfile exit\n");
if(root_header)
unregister_sysctl_table(root_header);
}
module_init(procfile_init);
module_exit(procfile_exit);
回复 2# haohaoxuexillk
参考上一贴吧。自己掌握学习Linux的方法。什么都问不是办法,总有别人也不关心的问题。
回复 4# Tinnal
谢谢大神,要是有Read the fucking source code的视频入门就好了,
最近也是和大家一样,自己像个没头的苍蝇乱撞,就是因为入门的资源没有个统一的公布地点,
没有个针对的教程(或者不知道),更没有个好的中文的教程(我说的是中文入门,入门后就不在乎什么E文了),
所以大家一遇到问题就不知道哪里找答案,所以才什么都问。当入门后大家就知道到哪里找答案,怎么分析问题,
怎么解决问题了
我觉得坛子里的个位大神应该联合出个制顶的帖子完善上面的要求,
要是把我关注的netfilter_queue(千万别给官方的,就一篇代码没什么用)和内核的墙过滤也贴上我就万分感谢了:mrgreen: wantaugust 发表于 2014-08-18 18:05 static/image/common/back.gif
回复 4# Tinnal
楼主都没发话,你来谢我干干什么,呵呵,没有糖发。 回复 6# Tinnal
找了一夜都没有内核的入门视频
没办法,硬着头皮看文字那
郁闷中。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 你们不能什么不会就直接上来问,Linux不是Windows,不会什么都有教程,都要写得清清楚楚。
顶这句!!
页:
[1]