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