本文记录一些实际工作中使用到的C语言编程技巧,或者学到的一些好用的用法
kernel与application通信
proc文件系统&mmap
kernel和application通信方式有很多,但是当数据量较大时,常用的ioctl
、netlink
方式并不适合,mmap
较为适用。
原理
对于应用层程序而言,系统调用mmap()
可以将一个文件映射到内存空间,对该文件的读写就是对该块内存的读写。对于内核空间而言,proc文件系统的文件操作集file_operations
支持mmap
方法,在文件proc方法的具体实现中,可以将内存映射到应用层调用mmap()
的虚拟地址上,从而实现应用层和内核空间通过proc文件关联同一块内存
代码
内核空间
1 |
|
用户空间
1 | static int mmap_read_once() |
需注意数据同步问题