kernel space对文件的读写操作
来源:互联网 发布:如何修改jenkins端口 编辑:程序博客网 时间:2024/05/08 15:06
在kernel space 可以通过下面两个函数从文件中读取数据,一个是以文件路径为参数,一个是以文件fd为参数extern int kernel_read_file_from_path(char *, void **, loff_t *, loff_t, enum kernel_read_file_id);extern int kernel_read_file_from_fd(int, void **, loff_t *, loff_t,enum kernel_read_file_id);如果获得文件fd 可以通过filp_open()filp_open()在kernel中可以打开文件,其原形如下:strcut file* filp_open(const char* filename, int open_mode, int mode);可以通过extern ssize_t kernel_write(struct file *, const char *, size_t, loff_t);来在kernel space写数据到文件对文件读写完成后调用filp_close(filp, NULL);来关闭文件.我们重点看看int kernel_read_file_from_path(char *path, void **buf, loff_t *size, loff_t max_size, enum kernel_read_file_id id){struct file *file;int ret;if (!path || !*path)return -EINVAL;//打开这个文件file = filp_open(path, O_RDONLY, 0);if (IS_ERR(file))return PTR_ERR(file);//在kernel中读取这个文件ret = kernel_read_file(file, buf, size, max_size, id);fput(file);return ret;}kernel_read_file->kernel_readint kernel_read(struct file *file, loff_t offset,char *addr, unsigned long count){mm_segment_t old_fs;loff_t pos = offset;int result;//这里需要注意的是在调用vfs的函数读写文件时必须调用set_fs()和get_fs()宏来改变内核对内存地址检查的处理方式.old_fs = get_fs();set_fs(get_ds());/* The cast to a user pointer is valid due to the set_fs() *///调用vfs的read接口来读取文件result = vfs_read(file, (void __user *)addr, count, &pos);set_fs(old_fs);return result;}总结一下,kernel中可以直接通过kernel_read_file_from_path来读取某个路径的文件,通过kernel_write来写文件,通过filp_close来关闭这个文件。这三个函数都是vfs提供接口的包装。
阅读全文
0 0
- kernel space对文件的读写操作
- 对文件的读写操作
- Java 中对文件的读写操作
- java对excel文件的读写操作
- C#对*.ini文件的读写操作
- JAVA 中对文件的读写操作
- jdom对xml文件的读写操作
- Java 对xml文件的读写操作
- 对ini文件的读写操作
- 对plist文件的读写操作
- C#对*.ini文件的读写操作
- Java对properties文件的读写操作
- C#对ini文件的读写操作
- Java 对xml文件的读写操作
- 【Python】Python对文件的读写操作
- Android 对 properties文件的读写操作
- Servlet对文件的读写操作
- C++ Json 对文件的读写操作
- 使用本地计划任务定时关闭azure虚拟机
- oracle调用JAVA类的方法
- CXF提供Client调用WebService接口的三种方法
- ArrayAdapter
- 神经网络框架搭建
- kernel space对文件的读写操作
- 安装CocoaPods及使用详解
- java原型模式
- 重力感应
- Codeforces 272D Dima and Two Sequences【思维+模拟】
- JAVASE4
- zookeeper集群搭建
- 将虚拟机添加到可用性集中
- 鸟瞰前端 , 再论性能优化