X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fkernel%2Fold_slides%2F.git;a=blobdiff_plain;f=plano;h=f1b0eb31bdebc1f724475694b169e50be940fe1e;hp=a6c440848dc2dbfaa184636c7e06ee9d07ad9200;hb=HEAD;hpb=baadd09de7f72e2eed86cf0efe51c88ef8d28cee diff --git a/plano b/plano index a6c4408..f1b0eb3 100644 --- a/plano +++ b/plano @@ -1,28 +1,58 @@ +DAY ONE: intro linux - version history/evolution DO? - modules + version history/evolution/compatibility constant change, book is already outdated current versioning/development model + modules build dependencies running new/bleeding-edge kernels - kernel/user space - libc/system calls concepts - robustness + kernel/user space + rings/levels/modes + memory protection/segmentation/pagination + library calls + allowed uses (floating point forbidden) + concurrency + small stack + libc/system calls + operating system functions + process management + concurrency + communication/IPC, scheduling + memory management + address space + virtual memory + filesystems + networking + device, I/O + robustness/security error checking + kernel space code + programming errors and bugs + restrict some operations to privileged users + do not send unzeored data (information leak) + do not trust received data (malformed data) (exploit) + risks for the machine/system/data basics Makefile - Kconfig DO? + Kconfig + building linux build init/exit + module macros + module parameters + config/build time options/parameters + sysfs interface for modules printk + module loading/unloading/handling VFS center/hub/interface char/block/procfs/sysfs: all go through VFS to device + fops is the main structure in linux FS on top of block devices block layer exception: some on top of MTD devices @@ -34,36 +64,43 @@ device driver subsystem 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 - 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 @@ -73,18 +110,18 @@ concurrency 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 @@ -93,27 +130,31 @@ scheduling/timing timer workqueue completion/wait_head - tasklets DO? STUDY + tasklets -portability - readl/writel/etc - be16_to_cpu/etc - -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 +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