嵌入式Linux驱动开发

 声明

本文源自(ISBN 978-7-121-31359-2)的2-6章的课后习题,有删减,个人期末预习自用。

内核模块

模块初始化函数 init_module


模块清除函数 cleanup_module


加载模块命令 insmodemodprobe


查看模块信息 modinfo


内核模块参数类型不包括 结构


内核模块导出所用宏 EXPORT_SYMBOL


内核模块不能调用C库函数接口


在内核模块代码中,不能定义任意大小的局部变量


字符设备驱动

字符设备和块设备的区别不包括 字符设备只能处理可打印字符,块设备可以处理二进制数据


在3.14.25版本内核中,主设备号占12位,次设备号占20


用于分配主次设备号的函数  alloc_chrdev_region


在字符设备驱动中,struct file_operations结构中的函数指针成员不包括 close


高级IO操作

ioctl接口函数的命令包含 幻数、参数传输方向、参数大小,不包含 权限


proc文件系统是一种伪文件系统,通常挂载在/proc目录下,包含了进程相关信息,硬件信息主要输出该文件系统


阻塞型IO会唤醒多个进程


I/O多路复用在select、poll或epoll系统调用中发生阻塞


在一次异步操作中,可以将多个I/O请求合并


当打开一个字符设备文件后,异步通知默认是使能的


mmap的最大优点是将内核空间的一片内存映射到用户空间,从而提高效率


大多数字符设备都支持文件定位操作


中断和时间管理

在中断处理例程中,如果中断是共享的,内核会决定具体调用哪一个驱动的中断服务例程(❌)


中断的下半部机制包括软中断、tasklet、工作队列


关于中断下半部机制,在下半部中可以响应新的硬件中断


下半部机制工作在进程上下文的是工作队列


修改低分辨率定时器的expires成员使用mod_timer函数


关于低分辨率定时器,所有定时器都放在一个组中,遍历整个链表非常耗时(❌)


高分辨率定时器是用ktime_t来定义时间的


互斥和同步

内核中的并发情况有硬件中断软中断和tasklet抢占内核的多进程环境普通的多进程环境多处理器或多核CPU


local_irq_save的作用是禁止本CPU中断并将之前的中断使能状态保存下来


可以对原子变量进行的操作有自减并测试结果是否为0加上一个整数值并返回结果进行位清除


在所有系统中,即不管是否抢占、是否是多核,自旋锁都是忙等待(❌)


如果不能获得信号量,则进程休眠(❌)


写者完成写后立即更新指针(❌)


完成量的complete函数可以唤醒所有一个进程

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值