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