Linux内核中的Proc文件系统(一)

  • 时间:
  • 浏览:1
  • 来源:彩神大发11选5_神彩大发11选5官方

struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,

struct proc_dir_entry *parent)

struct proc_dir_entry *parent)

下一节,其他同学 将结合4412来实现一下。

在/proc下创建文件:

需蕴含头文件<linux/proc_fs.h>,函数定义在/fs/proc/generic.c

a.在/proc下创建目录

调用:
struct proc_dir_entry *proc_mkdir(const char *name,

(3)自行实现三个 /proc文件

内核版本



struct proc_dir_entry *create_proc_read_entry(

        const char *name,

        mode_t mode, 

        struct proc_dir_entry *base,

        read_proc_t *read_proc, 

        void * data)

b.卸载/proc下的文件

采用remove_proc_entry卸载proc文件

void remove_proc_entry(

        const char *name, 

        struct proc_dir_entry *parent);

c.定义返回数据的函数

在多多应用程序 读取/proc文件时,内核会分配三个 内存页(即PAGE_SIZE个字节的内存块),驱动将要写的数据通过类似 内存页返回到用户空间。

typedef int (read_proc_t)(char *page, char **start, off_t off,

int count, int *eof, void *data);

思考一下,它还都前要有什么作用?

在实际工作中,一般由原厂提供的驱动,有一偏离 厂商会在proc下创建对应的目录,用proc文件系统来进行管理,比如:现在有一家触摸屏驱动的厂商,其他同学 写的驱动的版本号,一般就会放上去proc目录下对应厂商的目录,或者创建三个 类似/proc/version的文件,在应用层,通过cat  /proc/xxxx/version就都前要获取到该厂商触摸屏驱动的版本信息。

$>strings -f /proc/[0-9]*/cmdline