免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 740 | 回复: 0
打印 上一主题 下一主题

linux module初步(3) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-12 23:08 |只看该作者 |倒序浏览

               
/proc文件系统本来是用于得到系统信息的,现在用来报告一些感兴趣的内核时间,比如/proc/modules。
/proc文件系统的使用和设备驱动类似,要一个包含/proc文件需要的所有信息的结构体。然后使用init_module()和 cleanup_module()注册和卸载。
使用init_module()中调用 create_proc_entry()函数的时候,会在/proc文件夹下创建相应的文件。create_proc_entry()函数将会返回一个struct proc_dir_entry *的指针,用以控制文件信息,若返回NULL的话就是失败了。使用 procfs_read()函数从文件中读取数据。 cleanup_module()函数将删除这个文件。这段里面的文件可以称为节点。
移除文件要使用函数remove_proc_entry()。
使用函数 copy_from_user()或者get_user()将用户空间的存储单元复制到内核单元。这主要是考虑到要保护内核内存端。使用宏put_user 和get_user每次只能处理一个字符。 copy_to_user()和 and copy_from_user()能处理多个字符。
还可以使用节点来控制/proc 文件,主要的好处是能使用权限。 在struct inode_operations中有一个指向只想 struct file_operations的指针。struct file_operations中有包含着procfs_read()和procfs_write functions()函数。
方便写/proc 文件的API  seq_file()能帮助格式化/proc 文件以输出。
他由一个流程组成: start(), next(), and stop().
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69984/showart_1926388.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP