当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]drivers中file_operations的mmap操作的作用是: 将设备驱动内核空间的内存映射到用户空间里,可以通过用户空间中的mmap系统调用代替系统调用write和read。目的是提高读写效率。

drivers中file_operations的mmap操作的作用是:

将设备驱动内核空间的内存映射到用户空间里,可以通过用户空间中的mmap系统调用代替系统调用write和read。目的是提高读写效率。

系统调用mmap:

void* mmap (caddr_t addr, size_t len, int prot, int flags, off_t offset)

其中addr一般为NULL,目的是使内核自动分配可用的虚拟空间地址,并通过返回值返回,并与MAP_FAILED比较;

prot一般为PROT_WRITE | PROT_READ; flags为MAP_SHARED或MAP_PRIVATE之一;offset表示从设备文件都开始多大偏移处映射,一般为0。

文件操作mmap :

int (*mmap) (struct file* filp, struct vm_area_struct* vma)

定义struct vm_operations_struct xxx_vm_ops = {

.open = xxx_vm_open,

.close = xxx_vm_close,

.nopage = xxx_vm_nopage,

};

编写mmap文件操作函数的方式有两种:

一.使用remap_pfn_range一次性申请,不需要定义nopage函数

1.在mmap中调用remap_pfn_range;

2.在mmap中对vma->vm_ops进行附值;

3.在mmap结尾处主动调用vm_ops中的open;

二.定义nopage函数,在发生缺页时由内核申请内存中的物理页,由driver在nopage中将page与vma挂钩

1.mmap中除了对vma->vm_ops进行附值和主动调用vm_ops中的open外;

2.将设备内存首先按PAGE_SIZE对齐,最终只将页对齐的设备内存映射到用户空间中。然后将对齐操作处理后的虚拟地址逐页进行SetPageReserved(virt_to_page(virt_addr))保留(可选)

3.在nopage函数中,首先计算缺页的虚拟内存地址实际的内存页物理地址与设备文件开始处的偏移量offset;然后比较该偏移量是否超过映射的设备文件大小;最后将该缺页地址的虚拟地址变换成页帧号并申请该页。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读

新加坡和阿姆斯特丹2026年10月12日 /美通社/ -- 在 Euronext Amsterdam 上市的 SWI Group(“SWI”;股票代码:SWICH)今日宣布获...

关键字: GROUP AI IC 代码

企业无需将敏感代码、数据或工作流移出其可控的基础设施,即可使用 AI 赋能的软件开发与现代化能力。 北京2026年10月12日 /美通社/ -- IBM(纽约证券...

关键字: IBM AI BSP 软件开发

香港2026年10月9日 /美通社/ -- 华钦科技集团公司(纳斯达克代码:CLPS,以下简称"华钦科技")今日宣布将于下周五2026年10月16日开盘前发布2026财年下半年及全年财报。 华钦科技...

关键字: PS BSP 代码 COM

台湾新竹 – 2026 年 10 月 1 日 –––全球半导体领导供货商新唐科技股份有限公司(Nuvoton Technology Corporation)正式推出 NuMicro® MA35D0 系列最新 LQFP12...

关键字: MPU Linux 智能网关

旅游零售龙头品牌部署玩美移动 Skincare Pro AI 肤质分析技术,为出行旅客提供个性化护肤选购建议 上海2026年9月29日 /美通社/ -- 全球领先的增强现实(AR)和人工智能(AI)美妆科技领导者——玩...

关键字: 移动 AI 数字化 代码

连续四年获此殊荣 彰显推动可持续发展的坚定承诺  支持香港迈向碳中和未来 香港2026年9月24日 /美通社/ -- 新意网集团有限公司(“新意网”; “本公司”...

关键字: 可持续发展 数据中心 数码 代码

米尔电子 MYD-LR3576 Android V2.0.1 现已正式发布。继 V1.0.0 版本支持 Android 14 后,本次发布将系统升级至 Android 15,并围绕系统基线、板级功能和使用体验进行三重升级...

关键字: 开发板 Android 15 Linux

ARM工业网关跑软PLC,适合把“少量逻辑控制+协议转换+上云”合并到一台设备:本地用IEC 61131-3做启停/联锁/计数,外接DI/DO、RS485、CAN、以太网,再通过Modbus TCP/OPC UA/MQT...

关键字: ARM软PLC Linux 网关IO

摩尔斯微电子的 Wi-Fi HaLow软件现已面向 Zephyr开放,Zephyr是嵌入式设备领域应用最广泛的开源实时操作系统之一

关键字: 嵌入式设备 Wi-Fi HaLow Linux

中国上海,2026 年9月17日 — 安富利旗下全球电子元器件产品与解决方案分销商e络盟正在扩大 Emerson NI Nigel™ AI 供应范围,这是一款专为测试与测量打造的 AI 技术。客户现可通过 e络盟体验全新...

关键字: AI 代码 自动化
关闭