作家
登录

Linux内核驱动中对文件的读写

作者: 来源: 2017-08-02 10:08:59 阅读 我要评论

 *filename, int flags, int mode) 攫取文件 ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) 写文件 ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos) 封闭文件 int filp_close(struct file *filp, fl_owner_t id)

我们留意到在vfs_read和vfs_write函数中,其参数buf指向的用户空间的内存地址,如不雅我们直接应用内核空间的指针,则会返回-EFALUT。所以我们须要应用

  1. mm_segment_t fs = get_fs(); 
  2. set_fs(KERNEL_FS); 
  3. //vfs_write(); 
  4. vfs_read(); 
  5. set_fs(fs);  

下面为一个在内核中对文件操作的例子:

  1. #include <linux/module.h> 
  2. #include <linux/init.h> 
  3. #include <linux/fs.h> 
  4. #include <linux/uaccess.h> 
  5. static char buf[] = "你好"
  6. static char buf1[10]; 
  7. int __init hello_init(void) 
  8.     struct file *fp; 
  9.     mm_segment_t fs; 
  10.     loff_t pos; 
  11.     printk("hello enter\n"); 
  12.     fp = filp_open("/home/niutao/kernel_file", O_RDWR | O_CREAT, 0644); 
  13.     if (IS_ERR(fp)) { 
  14.         printk("create file error\n"); 
  15.         return -1; 
  16.     } 

  17.   推荐阅读

      看U8 cloud如何激发企业智慧?

    【51CTO.com原创稿件】云计算、大年夜数据、人工智能为代表的新一代IT技巧正在赓续改变企业互联网应用的传统构建方法,ERP行业或软件行业的云化转型逐渐成为企业“健康成长”的>>>详细阅读


    本文标题:Linux内核驱动中对文件的读写

    地址:http://www.17bianji.com/lsqh/36500.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)