我们留意到在vfs_read和vfs_write函数中,其参数buf指向的用户空间的内存地址,如不雅我们直接应用内核空间的指针,则会返回-EFALUT。所以我们须要应用
- mm_segment_t fs = get_fs();
- set_fs(KERNEL_FS);
- //vfs_write();
- vfs_read();
- set_fs(fs);
下面为一个在内核中对文件操作的例子:
- #include <linux/module.h>
- #include <linux/init.h>
- #include <linux/fs.h>
- #include <linux/uaccess.h>
- static char buf[] = "你好";
- static char buf1[10];
- int __init hello_init(void)
- {
- struct file *fp;
- mm_segment_t fs;
- loff_t pos;
- printk("hello enter\n");
- fp = filp_open("/home/niutao/kernel_file", O_RDWR | O_CREAT, 0644);
- if (IS_ERR(fp)) {
- printk("create file error\n");
- return -1;
- }
推荐阅读
【51CTO.com原创稿件】云计算、大年夜数据、人工智能为代表的新一代IT技巧正在赓续改变企业互联网应用的传统构建方法,ERP行业或软件行业的云化转型逐渐成为企业“健康成长”的>>>详细阅读
本文标题:Linux内核驱动中对文件的读写
地址:http://www.17bianji.com/lsqh/36500.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示