前言

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

声明

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

         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. cookie简介

    上例子 1.首先要用php创建cookie发送给客户端,利用setcookie()方法即可 <?php /* * * @Authors peng--jun * @Email 1098325951 ...

  2. Linux内核中的list用法和实现分析

    这些天在思考知识体系的完整性,发现总是对消息队列的实现不满意,索性看看内核里面的链表实现形式,这篇文章就当做是学习的i笔记吧.. 内核代码中有很多的地方使用了list,而这个list的用法又跟我们平时 ...

  3. SQL Server 恢复过程

    在恢复过程中.只会分析那些自最后一个检查点之后发生的更改,以确定是否需要重做还是撤销. 在最后一个检查点之前完成的操作都会精确的反应到数据文件中,恢复过程不需要做其它的事. 第一阶段: 分析. 这个阶 ...

  4. FIDO联盟:我们将杀死密码

    前不久发布的三星S5与iPhone 5S一样,配备了指纹识别技术.但更为重要的是,这一识别器可以与PayPal关连,进而与多种支付系统相连.通过这一过程,你很可能会摆脱密码,用指纹就可以畅游网络.当然 ...

  5. GDKOI2015 Day2

    P1 题目描述: 给出一个二分图,选择互不相交的边,使得边覆盖的点权和最大. solution: 简单DP,用树状数组维护最大值. 时间复杂度:$O(n \log n) $ P2 题目描述: 给出N个 ...

  6. padding-bottom布局解析;

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Gridland(规律)

    Gridland Time Limit: 2 Seconds      Memory Limit: 65536 KB BackgroundFor years, computer scientists ...

  8. cocos2d-x3.6 连连看随机地图实现

    我的博客:http://blog.csdn.net/dawn_moon 这一节来讲地图初始化实现. 连连看地图初始化有非常多实现方式,大概会有下面几种: 每一格的位置随机取图片放上去 随机取图片放到随 ...

  9. http 双向通信之port映射

    新产品开发了近2-3个月,给到客户做试用的时候,发现一个开发这么久从未考虑到的一个通信问题,mark下,下次开发同类产品的时候长点记性了. 产品由client与服务端两部分组成,client与服务端须 ...

  10. Table显示边框

    style="border-bottom: 1px solid #CCCCCC;"