A class plan sketch.
[cascardo/kernel/old_slides/.git] / plano
1 intro
2         linux
3
4 basics
5         Makefile
6         Kconfig DO?
7         build
8         init/exit
9         printk
10
11 VFS
12         center/hub/interface
13         char/block/procfs/sysfs: all go through VFS to device
14         FS on top of block devices
15                 block layer
16                 exception: some on top of MTD devices
17
18 device driver subsystem
19         buses
20         device classes
21         interfaces
22                 dev file
23                 sysfs
24                 procfs
25                 sysctl DO?
26                 netlink DO?
27
28 char device
29 procfs
30 sysfs
31 block device DO? STUDY
32 network device DO? STUDY
33 terminal/serial device DO? STUDY
34
35 debugging techniques
36         printk/procfs
37         kgdb DO?
38         trace DO?
39         kprobe DO?
40
41 C basics
42         container_of (struct embedding)
43         fops/*ops (function pointers)
44
45 data structures
46         list_head
47         bitmap
48         trees DO? STUDY rbtree
49         idr DO?
50         any hash implementation DO? STUDY
51
52 contexts
53         user context (current, copy_from_user, schedule) STUDY schedule
54         interrupt context
55         workqueue is user context
56         sleep == schedule
57
58 concurrency
59         SMP systems
60         locking
61         spinlock: disable scheduler
62         semaphore/mutex sleeps
63         per-cpu variables STUDY
64         atomic
65         RCU DO?
66
67 memory allocation
68         kobject refcount MENTION
69         slab STUDY
70                 multiple implementations
71                 space efficient (tables for different object sizes)
72                 concurrency efficient (per-cpu tables)
73         kmalloc
74                 uses slab STUDY
75         vmalloc
76                 linux memory layout
77
78 scheduling/timing
79         schedule{,_timeout}
80         timer
81         workqueue
82         completion/wait_head
83         tasklets DO? STUDY
84
85 portability
86         readl/writel/etc
87         be16_to_cpu/etc
88
89 interrupt
90         {request,free}_irq
91         interrupt context
92         tasklet/workqueue/postpone
93
94 buses
95         PCI bus DO?
96         USB bus DO?
97         some bus: SPI, I2C, parport DO?
98
99 device classes
100         some class: cdrom, backlight, input, misc DO?
101
102 kobject DO? advanced
103         refcounting