140c9f2d19dca8cafa70d5d4ac271fb57f8971b0
[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         operating system functions
14                 process management
15                         concurrency
16                         communication/IPC, scheduling
17                 memory management
18                         address space
19                         virtual memory
20                 filesystems
21                 networking
22                 device, I/O
23         robustness/security
24                 error checking
25                 kernel space code
26                 programming errors and bugs
27                 restrict some operations to privileged users
28                 do not send unzeored data (information leak)
29                 do not trust received data (malformed data) (exploit)
30
31 basics
32         Makefile
33         Kconfig DO?
34         build
35         init/exit
36         module macros
37         module parameters
38         config/build time options/parameters
39         sysfs interface for modules DO?
40         printk
41
42 VFS
43         center/hub/interface
44         char/block/procfs/sysfs: all go through VFS to device
45         FS on top of block devices
46                 block layer
47                 exception: some on top of MTD devices
48
49 device driver subsystem
50         buses
51         device classes
52         interfaces
53                 dev file
54                 sysfs
55                 procfs
56                 sysctl DO?
57                 netlink DO?
58
59 char device
60 procfs
61 sysfs
62 block device DO? STUDY
63 network device DO? STUDY
64 terminal/serial device DO? STUDY
65
66 debugging techniques
67         printk/procfs
68         debugfs DO? STUDY
69         kgdb DO?
70         trace DO?
71         kprobe DO?
72
73 C basics
74         container_of (struct embedding)
75         fops/*ops (function pointers)
76         IS_ERR (pointers and error values)
77
78 data structures
79         list_head
80         bitmap
81         trees DO? STUDY rbtree
82         idr DO?
83         any hash implementation DO? STUDY
84
85 contexts
86         user context (current, copy_from_user, schedule) STUDY schedule
87         interrupt context
88         workqueue is user context
89         sleep == schedule
90
91 concurrency
92         SMP systems
93         locking
94         spinlock: disable scheduler
95         semaphore/mutex sleeps
96         per-cpu variables STUDY
97         atomic
98         RCU DO?
99
100 memory allocation
101         kobject refcount MENTION
102         slab STUDY
103                 multiple implementations
104                 space efficient (tables for different object sizes)
105                 concurrency efficient (per-cpu tables)
106         kmalloc
107                 uses slab STUDY
108         vmalloc
109                 linux memory layout
110
111 scheduling/timing
112         schedule{,_timeout}
113         timer
114         workqueue
115         completion/wait_head
116         tasklets DO? STUDY
117
118 portability
119         readl/writel/etc
120         be16_to_cpu/etc
121
122 interrupt
123         {request,free}_irq
124         interrupt context
125         tasklet/workqueue/postpone
126
127 buses
128         PCI bus DO?
129         USB bus DO?
130         some bus: SPI, I2C, parport DO?
131
132 device classes
133         some class: cdrom, backlight, input, misc DO?
134
135 kobject DO? advanced
136         refcounting
137
138 STUDY:
139         module owner, concurrency, reference counting