前言

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

声明

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

         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 中读写文件的更多相关文章

  1. 【转】 Linux内核中读写文件数据的方法--不错

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法  有时候需要在Linuxkernel--大 ...

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

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8194276 1. 序曲 在用户态,读写文件可以通过read和write这两个系统调用来完成 ...

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

    第七话里面介绍了在内部存储读写文件 点击打开链接. 这样有一个比较打的问题,假设系统内存不够用,杀本应用无法执行,或者本应用被用户卸载重新安装后.以前保存的用户名和密码都不会得到回显.所以,有必要注意 ...

  4. 在android中读写文件

    在android中读写文件 android中只有一个盘,正斜杠/代表根目录. 我们常见的SDK的位置为:/mnt/sdcard 两种最常见的数据存储方式: 一.内存 二.本地 1.手机内部存储 2.外 ...

  5. Linux kernel中常见的宏整理

    0x00 宏的基本知识 // object-like #define 宏名 替换列表 换行符 //function-like #define 宏名 ([标识符列表]) 替换列表 换行符 替换列表和标识 ...

  6. linux系统中的文件权限详解(转)

    一.在<Linux系统中如何查看文件属性>中介绍了通过ls指令来查看文件的属性,具体如下: [命令] letuknowit@ubuntu:/$ cd /tmp letuknowit@ubu ...

  7. linux内核中的文件描述符(二)--socket和文件描述符

    http://blog.csdn.net/ce123_zhouwei/article/details/8459730 Linux内核中的文件描述符(二)--socket和文件描述符 Kernel ve ...

  8. linux kernel 模块多文件编译

    /*************************************************************************** * linux kernel 模块多文件编译 ...

  9. linux kernel中timer的使用

    linux kernel中timer的使用 http://blog.csdn.net/njuitjf/article/details/16888821 在kernel中如果想周期性的干些什么事情,或者 ...

随机推荐

  1. Nginx+PostgreSQL+Django+UWSGI搭建

    最近因为项目上的需要开始大量使用nginx,因此也想趁机将以前常用的django+apache的架构换成django+nginx.常见的 django webapp 部署方式采用FCGI 或 WSGI ...

  2. Latex命令笔记

    1.\documentclass[hyperref, UTF8]{ctexart} 2.\numberwithin{equation}{section} %article中让公式按章节名编号 3.\p ...

  3. SilverlightLoader使用托管代码创建自定义载入界面及动态加载XAP

    Silverlight实现动态加载xap和Splash Screen.收藏! 内容来自 http://silverlightchina.net/html/tips/2010/0115/588.html

  4. s3c6410学习笔记-将内核zImage、文件系统写到nandflash、屏幕校准

    1.之前已经将uboot写到nandflash里面了,接下来将内核zImage.文件系统写到nandflash. 2.编译内核 cd linux-2.6.28_smdk6410 make clean ...

  5. 帝国cms <!--list.var1-->产生不同样式

    制作帝国列表模板正常情况下 列表内容模板(list.var) (*) 写 <li class=''>[!--title--]<a href='[!--titleurl--]'> ...

  6. Labeling Balls(拓扑排序wa)

    Labeling Balls Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12466   Accepted: 3576 D ...

  7. poj 3680 Intervals(费用流)

    http://poj.org/problem?id=3680 巧妙的构图. 题目:给定N个区间(ai,bi)权值wi,求最大权和且每个点最多覆盖K次. 构图:将区间端点离散化,将第i个点连第i+1个点 ...

  8. Objective-C 类属性和方法的訪问权限

    OC中提供了4种訪问权限.@private, @public, @protected这三种和其它的C++, Java是一样的,@package这个訪问权限并非Java里的包訪问权限,OC中没有包的概念 ...

  9. Jave中System.getProperty()获取的值

    java.version Java 执行时环境版本号 java.vendor Java 执行时环境供应商 java.vendor.url Java 供应商的 URL java.home Java 安装 ...

  10. Nodejs解析HTML网页模块 jsdom

    工作需要抓取某些网页,所以今天试用下了node下的jsdom模块.同样功能的还有jquery jsdom https://npmjs.org/package/jsdom API很简单. jsdom.e ...