+DAY ONE:
intro
linux
- version history/evolution/compatibility DO A LITTLE
+ version history/evolution/compatibility
constant change, book is already outdated
current versioning/development model
modules
basics
Makefile
- Kconfig DO?
- building linux DO?
+ Kconfig
+ building linux
build
init/exit
module macros
module parameters
config/build time options/parameters
- sysfs interface for modules DO?
+ sysfs interface for modules
printk
module loading/unloading/handling
dev file
sysfs
procfs
- sysctl DO?
- netlink DO?
+ sysctl
+ netlink
+
+C basics
+ container_of (struct embedding)
+ fops/*ops (function pointers)
+ IS_ERR (pointers and error values)
char device
MAJOR/MINOR/MKDEV
+
+DAY TWO:
procfs
-sysfs
-block device DO? STUDY
-network device DO? STUDY
-terminal/serial device DO? STUDY
debugging techniques
printk/procfs
- debugfs DO? STUDY
- kgdb DO?
- trace DO?
- kprobe DO?
-
-C basics
- container_of (struct embedding)
- fops/*ops (function pointers)
- IS_ERR (pointers and error values)
+ debugfs
+ kgdb
+ trace
+ kprobe
data structures
list_head
bitmap
- trees DO? STUDY rbtree
- idr DO?
- any hash implementation DO? STUDY
+ trees rbtree
+ idr
+ any hash implementation
+
+portability
+ be16_to_cpu/etc
+
+
+DAY THREE:
contexts
- user context (current, copy_from_user, schedule) STUDY schedule
+ user context (current, copy_from_user, schedule) schedule
interrupt context
workqueue is user context
sleep == schedule
locking
spinlock: disable scheduler
semaphore/mutex sleeps
- per-cpu variables STUDY
+ per-cpu variables
atomic
- RCU DO?
+ RCU
memory allocation
kobject refcount MENTION
- slab STUDY
+ slab
multiple implementations
space efficient (tables for different object sizes)
concurrency efficient (per-cpu tables)
kmalloc
- uses slab STUDY
+ uses slab
vmalloc
linux memory layout
timer
workqueue
completion/wait_head
- tasklets DO? STUDY
-
-portability
- readl/writel/etc
- be16_to_cpu/etc
+ tasklets
-interrupt
+DAY FOUR:
+I/O
+ readl/writel/etc (portability)
+Interrupts
{request,free}_irq
interrupt context
tasklet/workqueue/postpone
-
-buses
- PCI bus DO?
- USB bus DO?
- some bus: SPI, I2C, parport DO?
-
-device classes
- some class: cdrom, backlight, input, misc DO?
-
-kobject DO? advanced
- refcounting
-
-STUDY:
- module owner, concurrency, reference counting
-
-board/machine/architecture files DO?
+Device Model
+ classes: cdrom, backlight, input, misc
+ terminal/serial device
+ sysfs
+ kobject (advanced)
+ refcounting
+
+Buses
+ PCI
+ USB
+ other buses: SPI, I2C, parport, etc
+
+DAY FIVE:
+DMA/Memory Mapping
+Block Devices
+ scather/gather
+Network Devices
+ skb
+board/machine/architecture files