在有的时候需要不同的内核模块之间实现互操作,直接的函数调用时行不通了。这样就需要借助文件系统,实现模块的互调。
而在内核态的情况下有两种调用方式,
1 一种就是通过
sys_open sys_write等的操作方式,由于这些系统调用时跟进程相应的绑定的所以在内核态没有没有进程的概念所以这种方式不适用。
2 直接通过sys_open里面的
struct file *f = do_filp_open(dfd, tmp, flags, mode, 0);
不过上面的函数还不能直接的调用,内核对上面的函数进行了相应的封装
struct file *filp_open(const char *filename, int flags, int mode)
{
return do_filp_open(AT_FDCWD, filename, flags, mode, 0);
}
EXPORT_SYMBOL(filp_open);
我们真正使用的是filp_open 在内核态进行操作。
具体的操作的例子可以借鉴网上的一些操作。 下面是一个内核态操作文件的例子
阅读(1586) | 评论(1) | 转发(0) |