方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危急)。 方法二:使用proc_create和seq_file创建proc文件(较方法三简洁)。 方法三:使用proc_create_data和seq_file创建proc文件(较麻烦。但比較完整)。 演示样例四:在proc文件里使用内核链表的一个演示样例(用的方法三)。 --- 一、 proc_...
1.create_proc_entry 创建目录 proc_mkdir(const char *name, struct proc_dir_entry *parent),如果parent为proc,使用NULL代替。 创建文件 create_proc_entry(constchar *name, mode_t mode, struct proc_dir_entry *parent) 删除文件/目录 remove_proc_entry(constchar *name, struct proc_dir_entry *parent...
2.调用kern_mount函数,该函数基本完成三个步骤,首先调用read_super()函数,在这个函数里,VFS将为proc文件系统分配一个终极块结构,并设置s_dev,s_flags等域,然后,将调用proc文件系统的自己的read_super例程,对应proc文件系统,该例程是proc_read_super(),该例程将设置终极块结构的其他值。我们将在下一节进行分析。
方法一:使用create_proc_entry创建proc文件(简单,但写操作有缓冲区溢出的危急); 方法二:使用proc_create和seq_file创建proc文件(较方法三简洁); 方法三:使用proc_create_data和seq_file创建proc文件(较麻烦,但比較完整); 演示样例四:在proc文件里使用内核链表的一个演示样例(用的方法三)。 --- 二、 proc_test...
在Linux驱动程序中使用proc函数,可以通过proc_create()或proc_create_data()函数来创建proc文件。这两个函数都需要传入一个proc_dir_entry结构体指针,该指针指向由内核分配的proc文件的数据结构。通过这个数据结构,驱动程序可以绑定相应的读写操作,将数据传输到用户空间。
void remove_proc_entry(const char *name, struct proc_dir_entry *parent);当在/proc文件系统下创建文件之后用户是怎么访问这个文件的,其实看到proc_create()函数的最后一个参数,传入的是一个file_operations结构体指针,其实,就是通过里面的read和write回调函数来实现的。下面我们来看一个具体的例子。在/proc...
parent:父文件夹的proc_dir_entry指针。 proc_fops:改文件的操作函数。 看到这个函数,有没有感到很熟悉?我们在学习驱动基础的时候,有用到了device_create函数来创建节点: device_create创建的设备节点存放于/dev目录下,而proc_create函数创建的与系统信息相关的节点存放于/proc目录下。既然它们这么相似,下面我们就模仿...
printk(KERN_ALERT"Create dir /proc/%s error!\n", USER_ROOT_DIR); return -1; } printk(KERN_INFO"Create dir /proc/%s\n", USER_ROOT_DIR); // Create a test entryunder USER_ROOT_DIR pt_entry1 =create_proc_entry(USER_ENTRY1, 0666, pt_root); ...
root@localhost:~# cat /proc/net/vlan/enp130s0f0.77 enp130s0f0.77 VID: 77 REORDER_HDR: 1 dev->priv_flags: 1021 total frames received 32 total bytes received 1344 Broadcast/Multicast Rcvd 0 total frames transmitted 21 total bytes transmitted 1542 Device: enp130s0f0 INGRESS priority mappings: ...
proc_ops proc_fops={.proc_read = read_proc};void create_new_proc_entry(void){/*create a new directory named hello, and return a pointer point to this dir*/proc_parent = proc_mkdir("hello",NULL);if(!proc_parent){printk(KERN_INFO "Error creating proc entry");}/*create a file ...