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