Added functions to move memory to and from user space.
[cascardo/kernel/old_slides/.git] / plano
diff --git a/plano b/plano
index 5845f53..f1b0eb3 100644 (file)
--- a/plano
+++ b/plano
@@ -1,16 +1,58 @@
+DAY ONE:
 intro
        linux
+               version history/evolution/compatibility
+               constant change, book is already outdated
+               current versioning/development model
+               modules
+               build dependencies
+               running new/bleeding-edge kernels
+
+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
+                       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
@@ -22,35 +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)
+       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
@@ -60,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
 
@@ -80,24 +130,31 @@ scheduling/timing
        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
+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