Added functions to move memory to and from user space.
[cascardo/kernel/old_slides/.git] / plano
diff --git a/plano b/plano
index 140c9f2..f1b0eb3 100644 (file)
--- a/plano
+++ b/plano
@@ -1,15 +1,22 @@
+DAY ONE:
 intro
        linux
 intro
        linux
-               version history/evolution DO?
-               modules
+               version history/evolution/compatibility
                constant change, book is already outdated
                current versioning/development model
                constant change, book is already outdated
                current versioning/development model
+               modules
                build dependencies
                running new/bleeding-edge kernels
                build dependencies
                running new/bleeding-edge kernels
-       kernel/user space
-       libc/system calls
 
 concepts
 
 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
        operating system functions
                process management
                        concurrency
@@ -27,21 +34,25 @@ concepts
                restrict some operations to privileged users
                do not send unzeored data (information leak)
                do not trust received data (malformed data) (exploit)
                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
 
 basics
        Makefile
-       Kconfig DO?
+       Kconfig
+       building linux
        build
        init/exit
        module macros
        module parameters
        config/build time options/parameters
        build
        init/exit
        module macros
        module parameters
        config/build time options/parameters
-       sysfs interface for modules DO?
+       sysfs interface for modules
        printk
        printk
+       module loading/unloading/handling
 
 VFS
        center/hub/interface
        char/block/procfs/sysfs: all go through VFS to device
 
 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
        FS on top of block devices
                block layer
                exception: some on top of MTD devices
@@ -53,37 +64,43 @@ device driver subsystem
                dev file
                sysfs
                procfs
                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
 
 char device
+       MAJOR/MINOR/MKDEV
+
+
+DAY TWO:
 procfs
 procfs
-sysfs
-block device DO? STUDY
-network device DO? STUDY
-terminal/serial device DO? STUDY
 
 debugging techniques
        printk/procfs
 
 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
 
 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
 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
        interrupt context
        workqueue is user context
        sleep == schedule
@@ -93,18 +110,18 @@ concurrency
        locking
        spinlock: disable scheduler
        semaphore/mutex sleeps
        locking
        spinlock: disable scheduler
        semaphore/mutex sleeps
-       per-cpu variables STUDY
+       per-cpu variables
        atomic
        atomic
-       RCU DO?
+       RCU
 
 memory allocation
        kobject refcount MENTION
 
 memory allocation
        kobject refcount MENTION
-       slab STUDY
+       slab
                multiple implementations
                space efficient (tables for different object sizes)
                concurrency efficient (per-cpu tables)
        kmalloc
                multiple implementations
                space efficient (tables for different object sizes)
                concurrency efficient (per-cpu tables)
        kmalloc
-               uses slab STUDY
+               uses slab
        vmalloc
                linux memory layout
 
        vmalloc
                linux memory layout
 
@@ -113,27 +130,31 @@ scheduling/timing
        timer
        workqueue
        completion/wait_head
        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
        {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