Kernel Paths
这是给我自己的备忘,很粗。这些知识是与timing 系统、preemption以及schedule紧密耦合的,需要它们一起融汇贯通。
System Call
Hard Interrupt
Soft Interrupt
Tasklet
wait queue
Key Data structures
- wait_queue_head_t
- wait_queue_t
Key APIs
- add_wait_queue
- prepare_to_wait/finish_wait/wait_event
- wake_up*
completion
Based on wait queue
Key Data Structure
- completion
Key APIs
- wait_for_completion
- complete/complete_all
work queue
Based on kernel thread
Key Data Structures
- workqueue_struct
- cpu_workqueue_struct
- work_struct
Key APIs
- create_workqueue*
- INIT_WORK
- queue_work
- schedule_work/schedule_work_on
stop machine
Based on kernel thread。
Key API
- int stop_machine(int (*fn)(void *), void *data, const struct cpumask *cpus)