archangle 发表于 2014-07-29 15:31

3.10 以上内核创建proc文件的问题

我的内核版本是3.11.0-15-generic

我现在想在/proc/sys/net/netfilter里面创建一个文件。我用proc_create函数的时候,proc_dir_entry 参数该怎么设置呢?

haohaoxuexillk 发表于 2014-08-16 11:37

楼主解决这个问题了吗 我也碰到这个问题了

Tinnal 发表于 2014-08-16 20:59

回复 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);

Tinnal 发表于 2014-08-16 21:02

回复 2# haohaoxuexillk

参考上一贴吧。自己掌握学习Linux的方法。什么都问不是办法,总有别人也不关心的问题。


   

wantaugust 发表于 2014-08-18 18:05

回复 4# Tinnal


    谢谢大神,要是有Read the fucking source code的视频入门就好了,
最近也是和大家一样,自己像个没头的苍蝇乱撞,就是因为入门的资源没有个统一的公布地点,
没有个针对的教程(或者不知道),更没有个好的中文的教程(我说的是中文入门,入门后就不在乎什么E文了),
所以大家一遇到问题就不知道哪里找答案,所以才什么都问。当入门后大家就知道到哪里找答案,怎么分析问题,
怎么解决问题了
我觉得坛子里的个位大神应该联合出个制顶的帖子完善上面的要求,

要是把我关注的netfilter_queue(千万别给官方的,就一篇代码没什么用)和内核的墙过滤也贴上我就万分感谢了:mrgreen:

Tinnal 发表于 2014-08-18 20:35

wantaugust 发表于 2014-08-18 18:05 static/image/common/back.gif
回复 4# Tinnal




楼主都没发话,你来谢我干干什么,呵呵,没有糖发。

wantaugust 发表于 2014-08-19 08:16

回复 6# Tinnal


    找了一夜都没有内核的入门视频
没办法,硬着头皮看文字那
郁闷中。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

qxhgd 发表于 2014-08-19 09:25

你们不能什么不会就直接上来问,Linux不是Windows,不会什么都有教程,都要写得清清楚楚。

顶这句!!


   
页: [1]
查看完整版本: 3.10 以上内核创建proc文件的问题