linux内核笔记(五)高级I/O操作(三)

内容如上写好的

这里分析下驱动的测试程序

#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/mman.h>
#include <string.h>int main(int argc, char * argv[])
{int fd;char *start;int i;char buf[32];fd = open("/dev/vfb0", O_RDWR);if (fd == -1)goto fail;//调用了mmap系统调用,第一个参数是映射的起始地址(通常为NULL由内核来决定),第二个参数32是要映射的内存空间的大小,第三个参数 PROT_READ | PROT_WRITE表示映射后的空间是可读、可写的,第四个参数是多进程共享,最后一个参数是位置偏移量,0表示从头开始start = mmap(NULL, 32, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);if (start == MAP_FAILED)goto fail;//直接对映射之后的内存的操作for (i = 0; i < 26; i++)*(start + i) = 'a' + i;*(start + i) = '\0';if (read(fd, buf, 27) == -1)goto fail;puts(buf);munmap(start, 32);return 0;fail:perror("mmap test");exit(EXIT_FAILURE);
}

代码第19行

start = mmap(NULL, 32, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);

调用了mmap系统调用,第一个参数是想要映射的起始地址,通常设置为NULL,表示由内核来决定该起始地址。第二个参数32是要映射的内存空间的大小。第三个参数PROT_ READ| PROT_ WRITE表示映射后的空间是可读、可写的。第四个参数MAP_ SHARED是指映射是多进程共享。最后一个参数是位置偏移,为0表示从头开始。

for (i = 0; i < 26; i++)*(start + i) = 'a' + i;*(start + i) = '\0';

代码第23行至第25行是直接对映射之后的内存进行操作。

if (read(fd, buf, 27) == -1)goto fail;

代码第27行则读出之前操作的内容,可对比判断操作是否成功。下面是编译、测试用的命令。

#mknod /dev/vfb c 256 1
#gcc -c test test.c
#make
#make modules_install
#depmod
#rmmod vfb
#modprobe vfb
#./testabcdefghijklmnopqrstuvwxyz

mmap设备文件操作相关推荐

  1. 该文件没有与之关联的程序来执行该操作_Liunx tty子系统分析之三 tty字符设备文件操作接口说明...

    本章主要介绍tty字符设备文件对应的操作接口,从而说明tty设备的数据打开.关闭.读.写等接口的实现等内容. tyy file_operations定义 tty字符设备文件操作接口的定义如下,主要包括 ...

  2. 专题 7 设备文件编程

    1.       设备文件操作 UNIX对设备文件的操作相对简单,一般分为打开设备文件.设置设备文件.读写设备文件和关闭设备文件等几部分. 代码示例如下: fd = open(devname, O_R ...

  3. file_operations结构体分析 (设备文件的操作)

    linux设备驱动中file_operations结构体分析  struct module *owner 第一个 file_operations 成员根本不是一个操作; 它是一个指向拥有这个结构的模块 ...

  4. [Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)热门干货

    点击打开链接 温馨提示      建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续 ...

  5. linux文件控制驱动程序,Linux设备驱动程序学习(6)-高级字符驱动程序操作[(3)设备文件的访问控制]...

    Linux设备驱动程序学习(6) -高级字符驱动程序操作[(3)设备文件的访问控制] 提供访问控制对于一个设备节点来的可靠性来说有时是至关重要的.这部分的内容只是在open和release方法上做些修 ...

  6. iOS客户端开启FTP,其他设备访问手机本地文件操作实现

    iOS客户端开启FTP,其他设备访问手机本地文件操作实现 因为项目需要,需要在手机端搭建FTP服务,让其他设备来访问手机某个路径文件夹下边的文件,实现下载功能. 主要实现借助第三方库XMFTPServ ...

  7. linux c 文件操作

    目录 一.简述 二.系统I/O 2.1 open()函数 2.2 close()函数 2.3 read()函数 2.4 write()函数 2.5 lseek()函数 2.6 mmap()函数 三.标 ...

  8. 【Linux】文件操作系统调用

    一. 文件描述符 在Linux下使用文件描述符来表示设备文件和普通文件.文件描述符是一个整型的数据,所有对文件的操作都通过文件描述符实现.文件描述符的范围是0~OPEN_MAX,系统中有3个已经分配的 ...

  9. Linux C高级编程——文件操作之系统调用

    Linux C高级编程文件操作之系统调用 宗旨:技术的学习是有限的,分享的精神是无限的! 库函数是一些完成特定功能的函数,一般由某个标准组织制作发布,并形成一定的标准.使用库函数编写的函数一般可以应用 ...

  10. linux 声卡设备文件夹,Linux ALSA声卡驱动之三:PCM设备的创建

    4. 设备文件节点的建立(dev/snd/pcmCxxDxxp.pcmCxxDxxc)本文引用地址:http://www.eepw.com.cn/article/201612/341593.htm 4 ...

最新文章

  1. Swift反射API及其用法
  2. ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法
  3. 今天收到了学校给出的退学警告
  4. PostgreSql入门命令
  5. PetShop 4.0 系列之五 [转]
  6. IntelliJ IDEA打开Maven项目,Spring boot所有依赖红名,不可用
  7. linux用户带密码迁移 LDAP
  8. CreateProcess启动游戏注入DLL
  9. jquery中如何表达本页网址_jquery中怎么跳转页面?
  10. 怎么检测不到我的音频_Linux 上的最佳音频编辑工具推荐 | Linux 中国
  11. IBM T61 键盘没有反映。
  12. 风讯CMS常见问题锦集
  13. React-Native学习指南 1
  14. kafka/producer.lua:168: attempt to perform arithme
  15. javascript 自建立对象
  16. 翻译: 2.2 Pandas Pytorch 数据预处理 深入神经网络
  17. arcgis 只能查看指定行政区域_用ArcGIS来实现坐标转换操作,以及相关的使用心得...
  18. html js点击下拉菜单代码,JavaScript下拉菜单功能实例代码
  19. 陪你看这世间---识人术
  20. 中国十大芯片企业排名

热门文章

  1. 素数的判断(c语言)
  2. java选择题库_java选择题库
  3. APP扫码登录WEB系统
  4. 清科2017医美行业研究报告:消费者搅动产业变局
  5. 《Axure RP 9实战指南》Axure RP 9.0最新版汉化问题
  6. [杂]实用工具与链接
  7. 电脑和服务器之间怎么传送大文件夹,WIN10两台电脑之间快速传输大量文件 - 卡饭网...
  8. silk lobe资源公众号_微小说全免费阅读公众号阅读网资源推荐
  9. axios封装接口步骤详解
  10. 新浪股票接口获取历史数据