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