Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
命令号应用 _IO/_IOR/_IOW/_IOWR 宏表达方向、类型和结构大小,用户结构采用固定宽度类型、明确填充和版本/长度,驱动用 copy_from_user/to_user 并校验保留字段。发布后的 UAPI 不应随意改变布局。
驱动应通过标准框架按描述符获取 regulator、clk、reset 和 pinctrl,而不是直接写 SoC 固定寄存器;按器件数据手册的顺序 enable/deassert/select,并在失败或 remove/suspend 时逆序回滚。
regmap 抽象寄存器地址和值宽、字节序、总线访问、缓存、更新位和调试能力,使驱动逻辑与 I²C/SPI 细节分离。易变、只读、写一清零和有副作用寄存器必须正确描述,不能盲目缓存。
DMA mask 告诉内核设备能访问多少位地址,映射层据此选择可达内存或建立转换。设备看到的 DMA 地址可能经过 IOMMU、总线窗口或 bounce buffer,并不保证等于 CPU 物理地址,驱动只能使用 DMA API 返回值。
kfifo 适合有界 FIFO;单生产者单消费者在规定条件下可无额外锁,多生产者或多消费者需要同步。字节流不天然保存消息边界,可使用 record 形式或自定义长度头,并在取出前验证完整记录。