mmap设备文件操作
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设备文件操作相关推荐
- 该文件没有与之关联的程序来执行该操作_Liunx tty子系统分析之三 tty字符设备文件操作接口说明...
本章主要介绍tty字符设备文件对应的操作接口,从而说明tty设备的数据打开.关闭.读.写等接口的实现等内容. tyy file_operations定义 tty字符设备文件操作接口的定义如下,主要包括 ...
- 专题 7 设备文件编程
1. 设备文件操作 UNIX对设备文件的操作相对简单,一般分为打开设备文件.设置设备文件.读写设备文件和关闭设备文件等几部分. 代码示例如下: fd = open(devname, O_R ...
- file_operations结构体分析 (设备文件的操作)
linux设备驱动中file_operations结构体分析 struct module *owner 第一个 file_operations 成员根本不是一个操作; 它是一个指向拥有这个结构的模块 ...
- [Android L]SEAndroid开放设备文件结点权限(读或写)方法(涵盖常用操作:sys/xxx、proc/xxx、SystemProperties)热门干货
点击打开链接 温馨提示 建议你先了解一下上一篇博文([Android L]SEAndroid增强Androd安全性背景概要及带来的影响)所讲的内容,先对SEAndroid窥个全貌,然后再继续 ...
- linux文件控制驱动程序,Linux设备驱动程序学习(6)-高级字符驱动程序操作[(3)设备文件的访问控制]...
Linux设备驱动程序学习(6) -高级字符驱动程序操作[(3)设备文件的访问控制] 提供访问控制对于一个设备节点来的可靠性来说有时是至关重要的.这部分的内容只是在open和release方法上做些修 ...
- iOS客户端开启FTP,其他设备访问手机本地文件操作实现
iOS客户端开启FTP,其他设备访问手机本地文件操作实现 因为项目需要,需要在手机端搭建FTP服务,让其他设备来访问手机某个路径文件夹下边的文件,实现下载功能. 主要实现借助第三方库XMFTPServ ...
- linux c 文件操作
目录 一.简述 二.系统I/O 2.1 open()函数 2.2 close()函数 2.3 read()函数 2.4 write()函数 2.5 lseek()函数 2.6 mmap()函数 三.标 ...
- 【Linux】文件操作系统调用
一. 文件描述符 在Linux下使用文件描述符来表示设备文件和普通文件.文件描述符是一个整型的数据,所有对文件的操作都通过文件描述符实现.文件描述符的范围是0~OPEN_MAX,系统中有3个已经分配的 ...
- Linux C高级编程——文件操作之系统调用
Linux C高级编程文件操作之系统调用 宗旨:技术的学习是有限的,分享的精神是无限的! 库函数是一些完成特定功能的函数,一般由某个标准组织制作发布,并形成一定的标准.使用库函数编写的函数一般可以应用 ...
- linux 声卡设备文件夹,Linux ALSA声卡驱动之三:PCM设备的创建
4. 设备文件节点的建立(dev/snd/pcmCxxDxxp.pcmCxxDxxc)本文引用地址:http://www.eepw.com.cn/article/201612/341593.htm 4 ...
最新文章
- Swift反射API及其用法
- ewebeditor编辑器ASP/ASPX/PHP/JSP版本漏洞利用总结及解决方法
- 今天收到了学校给出的退学警告
- PostgreSql入门命令
- PetShop 4.0 系列之五 [转]
- IntelliJ IDEA打开Maven项目,Spring boot所有依赖红名,不可用
- linux用户带密码迁移 LDAP
- CreateProcess启动游戏注入DLL
- jquery中如何表达本页网址_jquery中怎么跳转页面?
- 怎么检测不到我的音频_Linux 上的最佳音频编辑工具推荐 | Linux 中国
- IBM T61 键盘没有反映。
- 风讯CMS常见问题锦集
- React-Native学习指南 1
- kafka/producer.lua:168: attempt to perform arithme
- javascript 自建立对象
- 翻译: 2.2 Pandas Pytorch 数据预处理 深入神经网络
- arcgis 只能查看指定行政区域_用ArcGIS来实现坐标转换操作,以及相关的使用心得...
- html js点击下拉菜单代码,JavaScript下拉菜单功能实例代码
- 陪你看这世间---识人术
- 中国十大芯片企业排名