LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1251|回复: 3

菜鸟急问:如何在linux kernel mode创建文件保存数据!

[复制链接]
发表于 2005-6-2 10:02:56 | 显示全部楼层 |阅读模式
本人初用linux(2.4.20-8),现有c程序工作在核心态,需要对接收来的数据进行创建文件保存,但我不知道如何操作,请问如何操作?使用sys_open、sys_write吗?如果是的话,需要如何调用,使用什么库函数~~~请一定要帮忙!
发表于 2005-6-2 13:16:22 | 显示全部楼层
4.2 在内核中可以使用系统调用吗?
   a. 可以。内核源代码中就有使用系统调用的例子,如open()、execve()等。
   b. 在内核中使用系统调用必须要在源文件中包括以下两行:
      #define __KERNEL_SYSCALLS__
      #include <linux/unistd.h>
   c. 内核中使用系统调用的相关定义可查看文件include/asm/unistd.h。
      如果要用的系统调用该文件中没有定义,可以按照其格式自行添加。
   d. 如果要在模块中使用系统调用,必须要自己定义errno如:
      int errno;
      内核在lib/errno.c中定义了errno,但该符号不导出,所以模块编程时需要自己
      定义errno,用以存放系统调用出错号。
4.3 在内核中怎么打开并操作一个文件?
   a. 直接用open()、read()等系统调用,见问题4.2。
   b. 用filp_open()函数打开文件,得到struct file *的指针fp。
      使用指针fp进行相应操作,如读文件可以用fp->f_ops->read。
      最后用filp_close()函数关闭文件。
      filp_open()、filp_close()函数在fs/open.c定义,在include/linux/fs.h中
      声明。
   c. 自己写包装函数,可参照文件fs/exec.c中的open_exec()和kernel_read()函数。
      在http://www.linuxforum.net/forum/ ... t=&Board=linuxK
       &Number=363455&page=&view=&sb=&o=&vc=1上有些代码可以参照。
回复 支持 反对

使用道具 举报

发表于 2005-6-2 13:19:14 | 显示全部楼层
我记得可以先声明,然后直接用sys_open,sys_read,sys_write等函数的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-2 13:53:06 | 显示全部楼层
万分感谢各位,我去尝试下先!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表