一、背景
在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() filp_close(), kernel_read(),kernel_write()
这些函数在linux/fs.h和asm/uaccess.h头文件中声明。
二、直接上干货
内核源码路径:fs/open.c 自行去查看
strcut file* filp_open(const char* filename, int open_mode, int mode);
int filp_close(struct file *filp, fl_owner_t id);
id : 指得是 thread_id
内核源码路径:fs/read_write.c 自行去查看
ssize_t kernel_read(struct file *file, void *buf, size_t count, loff_t *pos);
ssize_t kernel_write(struct file *file, const void *buf, size_t count,loff_t *pos);
三、注意事项
read/write 是比较耗时的操作,写代码时,注意read前加 msleep();进行等待;