Android 怎样在linux kernel 中读写文件

前言

欢迎大家我分享和推荐好用的代码段~~

声明

欢迎转载,但请保留文章原始出处:

CSDN:http://www.csdn.net

雨季o莫忧离:http://blog.csdn.net/luckkof

正文

[Description]

怎样在linux kernel 中读写文件

[Keyword]

linux kernel read write file 读写文件

[Solution]

通常我们仅仅会在linux native/app 层 读写文件,但可能有一些很特别的情况下,我们须要直接在Kernel 中读写文件信息。

以下给出典型的Code:

static struct file *open_file(char *path,int flag,int mode)

{

struct file *fp;

fp=filp_open(path, flag, mode);

if (!IS_ERR_OR_NULL(fp)) return fp;

else return NULL;

}

static int read_file(struct file *fp,char *buf,int readlen)

{

if (fp->f_op && fp->f_op->read)

return fp->f_op->read(fp,buf,readlen, &fp->f_pos);

else

return -1;

}

static int write_file(struct file *fp,char *buf,int len)

{

if (fp->f_op && fp->f_op->write)

return fp->f_op->write(fp, buf, len, &fp->f_pos);

else

return -1;

}

static int close_file(struct file *fp)

{

filp_close(fp,NULL);

return 0;

}

注意的是您在使用read_file & write_file 之前须要

//read set kernel domain

set_fs(KERNEL_DS);

在read_file & write_file 完毕之后,须要

//need set user domain again

set_fs(USER_DS);

一定要成对的出现,不然将直接导致Kernel Crash.

最后强调一点: 假设能在linux native/app 层读写文件,尽量不要在Kernel 中去做这种工作。由于这个可能带来安全性的问题,以及可能由于新增代码而影响Kernel稳定性

Android 怎样在linux kernel 中读写文件

时间: 2024-08-03 23:37:39

Android 怎样在linux kernel 中读写文件的相关文章

Android 如何在linux kernel 中读写文件

前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net 雨季o莫忧离:http://blog.csdn.net/luckkof 正文 [Description] 如何在linux kernel 中读写文件 [Keyword] linux kernel read write file 读写文件 [Solution] 通常我们只会在linux native/app 层 读写文件,但可能有一些非常特别的情况下,我们需要直接在

在linux内核中读写文件

http://blog.csdn.net/tommy_wxie/article/details/8194276 1. 序曲 在用户态,读写文件可以通过read和write这两个系统调用来完成(C库函数实际上是对系统调用的封装). 但是,在内核态没有这样的系统调用,我们又该如何读写文件呢? 阅读Linux内核源码,可以知道陷入内核执行的是实际执行的是sys_read和sys_write这两个函数,但是这两个函数没有使用EXPORT_SYMBOL导出,也就是说其他模块不能使用. 在fs/open.c

【转】在linux内核中读写文件 -- 不错

原文网址:http://blog.csdn.net/tommy_wxie/article/details/8194276 1. 序曲 在用户态,读写文件可以通过read和write这两个系统调用来完成(C库函数实际上是对系统调用的封装). 但是,在内核态没有这样的系统调用,我们又该如何读写文件呢? 阅读linux内核源码,可以知道陷入内核执行的是实际执行的是sys_read和sys_write这两个函数,但是这两个函数没有使用EXPORT_SYMBOL导出,也就是说其他模块不能使用. 在fs/o

在linux内核中读写文件2

1,内核代码 #include <linux/kernel.h> #include <linux/init.h> #include <linux/types.h> #include <linux/spinlock.h> #include <linux/blkdev.h> #include <linux/module.h> #include <linux/fs.h> #include <linux/errno.h>

Android简易实战教程--第十五话《在外部存储中读写文件》

第七话里面介绍了在内部存储读写文件 点击打开链接. 这样有一个比较打的问题,假设系统内存不够用,杀本应用无法执行,或者本应用被用户卸载重新安装后.以前保存的用户名和密码都不会得到回显.所以,有必要注意这个问题 因此把文件保存到sd卡中.即今天所写的  第十五话<在外部存储中读写文件> 首先布局文件和第七话一样: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:

在android中读写文件

在android中读写文件 android中只有一个盘,正斜杠/代表根目录. 我们常见的SDK的位置为:/mnt/sdcard 两种最常见的数据存储方式: 一.内存 二.本地 1.手机内部存储 2.外部存储设备(SD卡) 在SD卡中读数据是不需要权限的,但是在SD卡中写数据是要权限的: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 读写文件的方式就是用的Java的文件

Android 存储学习之在外部存储中读写文件

上节学习了如何在手机内部存储中读写文件,本节学习如何在手机的外部存储中读写文件.那就是如何在Sdcard中读写文件. 那我们还是用以前登录界面的例子举例说明,(登录界面请看上节Android 存储学习之在内部存储中读写文件) 先我们显示写的代码: 当点击确定并且自动登录的钩是选中的,则就会在sdcard文件夹写创建一个info.txt文件 public void login(View v) { String name = ed_nam.getText().toString(); String p

Android 存储学习之在内部存储中读写文件

大家都知道,在实际工作中开发,进场需要将一个文件写入到手机的存储中.既然说到手机的存储空间,那就先说说手机的存储空间分类: 1: 内部存储空间 RAM内存: 也就是手机的运行的内存,相当于电脑的内存 ROM内存: 也就是手机的存储内存,相当于电脑的硬盘 2: 外部存储空间 也就是可插拔的SD卡,相当于电脑的移动硬盘,U盘等. 既然手机存储分为两类,那我们先看看如何在手机的内部存储中读写文件. 那我们引入一个实际中很常见的例子: 一般带登录界面的,都需要将用户的信息保存到本地.我们就用上面的例子演

Linux Kernel中获取当前目录方法(undone)

目录 0. 引言 1. 基于进程内存镜像信息struct mm_struct获取struct path调用d_path()获取当前进程的"绝对路径" 2. 基于文件描述符(fd).task_struct调用d_path()获取当前进程的"当前目录" 3. 基于dentry.vfsmount调用d_path()获取当前进程的"当前目录" 4. 基于get_fs_pwd获取当前目录 0. 引言 本文涉及的是ring0下的获取当前进程工作目录的方法,L