- 论坛徽章:
- 0
|
本帖最后由 零度x 于 2015-09-21 12:22 编辑
- char* read_file(char* file_name)
- {
- struct file *file;
- int size;
- char* data;
- char* ret;
- loff_t pos;
- mm_segment_t old_fs;
- int ret_size;
- ret = NULL;
- old_fs = get_fs();
- set_fs(KERNEL_DS);
-
- file = filp_open(file_name, O_RDONLY, 0);
- if (!IS_ERR(file))
- {
- size = file->f_dentry->d_inode->i_size;
- data = vmalloc(size);
- if (data)
- {
- memset(data, 0, size);
- pos = 0;
- ret_size = vfs_read(file, data, size, &pos);
- if (size == ret_size)
- {
- printk("vfs_read success!\n");
- ret = data;
- }
- else
- {
- printk("error vfs_read ret : %d\n", ret_size);
- vfree(data);
- data = NULL;
- }
- }
- filp_close(file, NULL);
- }
- ret = data;
- set_fs(old_fs);
- return ret;
- }
复制代码 我调用这段代码,每次vfs_read都返回-EFAULT(-14)
求助,怎么解决这个问题啊 |
|