欢迎来到天天文库
浏览记录
ID:32996488
大小:56.87 KB
页数:3页
时间:2019-02-18
《内核中针对proc文件系统的编程函数总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、内核中针对proc文件系统的编程函数总结己有54438次阅读2008-10-1119:08个人分类:Linuxkernel关键词:proc内核函数一、头文件:#includevlinux/proc_fs.h>二、创建与删除proc文件:<一>创建普通文件:1•创建不可读写的普通文件/*此函数只负责在proc中创建一个只读文件,即能在proc中看到这个文件。**/structproc_dir_entry*create_proc_entry(constchar*name,mode_tmode,structproc_d
2、ir_entry*parent);@name:要创建的文件名@mode:要创建的文件的属性默认0755@parent:这个文件的父目录2•创建只读的普通文件/*和create_proc_entry基本一样。*只是为该文件挂接上读函数:read_proc(voiddata);**/structproc_dir_entry*create_proc_read_entry(constchar*namezmode_tmode,structproc_dir_entry*parentjead_p「oc_t*read_proc,
3、void*data);@name:要创建的文件名@mode:要创建的文件的属性默认0755@parent:这个文件的父目录@read_proc:当用户读这个文件时,内核调用的函数@data:传给read_proc的参数3•创建符号连接/*该函数在父目录parent下创建一个指向dest的连接name。*就像In:*#ln-sdestparent/name**/structproc_dir_entry*proc_symlink(constchar*name,structproc_dir_entry*parent,c
4、onstchar*dest);@name:要创建的文件名@parent:这个文件的父目录@dest:符号连接的目标文件4•创建目录/*该函数在父目录parent下创建一个目录name**/structproc_dir_entry*proc_mkdir(constchar*name,structproc_dir_entry*parent);@name:要创建的目录名@parent:这个目录的父0录1•删除文件或目录/*这个函数从proc文件系统中删除一个文件或目录。*注意:1。是通过参数name,而不是通过创建时返
5、回的指针来删除的。*2。该函数不会递归删除目录下的文件。*3。data变量保存了分配的内存,要先释放对应内存,再删除该文件。**/voidremove_proc_entry(constchar*name,structproc_dir_entry*parent);@name:要删除的文件或目录名@parent:所在的父目录v二〉、读写proc文件为了能让用户读写添加的proc文件,需要挂接上读写回调函数:read_proc和write_proc例:structproc_dir_entry*entry;entry-&
6、gt;read_proc=read_proc_foo;entry->write_proc=write_proc_foo;1・读函数read_func/*该函数把耍写的信息写入buffer,最多不超过PAGE_SIZE**/intread_func(char*buffer;char**statzoff_toffjntcount’int*peof;void*data);@buffer:把要返冋给用户的信息写在buffer里,最大不超过PAGE_SIZE(一般4K)@stat:一般不使用@off:buffer的偏
7、移量@count:用户要取的字节数@peof:读到文件尾时,把peof指向的位置置1@data:被多个proc文件定义为读时,通过data传递参数2•写函数write_func/*该函数最多从buffer中读取count个字节的数据。*注意:buffer地址在用户空I'可,需要先用copy_from_user()把这些数据拷贝到内核中。**/intwrite_func(structfile*file,constchar*buffei;unsignedlongcount,void*data);@file:该proc
8、文件对应的file结构,一般忽略。@buffer:待写的数据所在的位置@count:待写数据的大小@data:同read_funcv三〉、seq_file编程接口include/linux/seq_file.h:structseq_file{char*buf;size_tsize;size_tfrom;sizetcount;loff_tindex;lofCtversion
此文档下载收益归作者所有