Linux UIO驱动框架几个核心问题

Linux UIO驱动框架(一)-优快云博客icon-default.png?t=O83Ahttps://blog.youkuaiyun.com/weixin_43249970/article/details/126411340Linux UIO驱动-优快云博客icon-default.png?t=O83Ahttps://blog.youkuaiyun.com/weixin_38452632/article/details/130947993

【声明】本文参考了上述文章,然后针对其中的一些关键问题,补充了自己的理解

一、UIO驱动框架的核心功能

1. mmap,结合dts文件中的UIO设备的定义,限制了mmap的地址范围和大小,提升了内存映射&访问安全性。

2. 中断上报,提供了中断从内核态上报到用户态的方法。

二、UIO驱动框架分层介绍

1、用户态提供的主要是 open、mmap、read、write 系统调用

2、DTS文件中需要定义UIO设备节点,分为内存、中断两类,比如DTS中对于中断,就定义了相关的硬件中断号

3、内核部分uio驱动采用的是platform框架,负责基于DTS设备树,创建UIO设备节点。uio核心层完成了字符设备注册,以及类的创建

三、中断从内核上报到用户态的相关内容

1、用户态针对UIO设备进行read,来等待中断,没有中断的时候read会阻塞、有中断的时候read会返回。

      read触发的主要内容是:调用read函数会将当前线程加入等待队列,实现线程的阻塞。

2、在内核态通过 request_irq 实现中断号与中断处理程序的关联,这样有中断的时候,会执行相应的中断处理程序。

3、中断处理程序中,会通过uio_event_notify通知UIO框架,框架会根据设备句柄,把相应的read阻塞解阻,这样用户态就会感知到中断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值