内核代码符号
简写 | 全称 | 中文名称 | 含义 |
---|---|---|---|
BSP | bootstrap processor | 启动cpu | 内核启动cpu |
APs | application processors | 从属cpu | 启动过程除BSP之外的cpu |
- 在加载模块时可以给指定的变量赋值
- module_param(name, type, perm)
- name: 变量名称
- type:变量类型
- perm:变量在sysfs中的权限
- 将symbol(函数或者变量)导出到内核空间,使得内核中的所有代码都可以使用
- EXPORT_SYMBOL(symbol)
- symbol:变量或者函数
- 在worker thread中会对非空的工作队列进行工作队列的出队操作,并运行work绑定的函数;
- it schedules a task to run at a later time;
内核文件系统
- linux内核开始使用sysfs文件系统,它的作用是将设备和驱动程序的信息导出到用户空间,方便了用户读取设备信息,同时支持修改和调整;
- sysfs是一个系统在启动时构建在内存中虚拟文件系统,一般被挂载在/sys目录下,既然是存储在内存中,自然掉电不保存,不能存储用户数据;
- Kobject是将Bus,Class,Device,Driver的设备模型的共同功能的抽象;Kset可以看成Kobject的集合,也可以当做Kobject来使用;
- Proc是用于与内核内部数据结构接口的伪文件系统。作为用户,您可以使用proc文件进行系统诊断-CPU,内存,中断等。您还可以配置许多参数,例如调度程序参数,内核对象,内存等;
- 使用proc_create()注册接口;
系统知识
- cpu的逻辑上线以及下线是分阶段的,在不同的阶段可以设置不同的回调函数;
- Linux内核会创建虚拟总线cpu_subsys,每个CPU注册的时候,都会挂载在该总线上,CPU的online和offline的操作,最终会回调到该总线上的函数;
- 通过echo 0 > /sys/devices/system/cpu/cpu1/online和echo 1 > /sys/devices/system/cpu/cpu1/online来控制CPU的热插拔;
Linux内核基础–事件通知链(notifier chain)
- 通知链只能用在各个子系统之间,而不能在内核和用户空间进行事件的通知;
- 事件通知链表是一个事件处理函数的列表,每个通知链都与某个或某些事件有关,当特定的事件发生时,就调用相应的事件通知链中的回调函数,进行相应的处理;
- 注册通知链,使用通知链,触发事件调用通知链函数;
- 回调函数根据case选择的事件去调用不同流程;而唤醒函数根据event可以唤醒不同的通知链;
- wake_list的使用