X-Git-Url: http://git.cascardo.eti.br/?p=cascardo%2Fkernel%2Fold_slides%2F.git;a=blobdiff_plain;f=plano;h=f1b0eb31bdebc1f724475694b169e50be940fe1e;hp=3348a13b90864e80ed65f79edaf2f39dd5c50651;hb=HEAD;hpb=4b1d5c2496ae945e1294b77a99f6a66fd851acd1 diff --git a/plano b/plano index 3348a13..f1b0eb3 100644 --- a/plano +++ b/plano @@ -1,15 +1,22 @@ +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 + 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 @@ -27,17 +34,20 @@ concepts 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 DO? + sysfs interface for modules printk + module loading/unloading/handling VFS center/hub/interface @@ -54,37 +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 - 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 @@ -94,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 @@ -114,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