%Summary
%Thadeu Cascardo
-# Introduction
+# Revision
-* Linux
-* Device Drivers
+* Computer Organization
* Operating Systems
+* Unix, POSIX, GNU and Linux
+* Free Software and GPL
-# Basics
+# Introduction to Linux
+
+* History
+* Development Model
+* Basic Tools
+* Source Tree
+* Code Browsing
+* Coding Standards
+* git
+* Configuring
+* Building
+* Booting
+
+# Hello World
-* Buildig Linux
* Linux modules
+* Module skeleton
+* Headers
+* Building
* printk
+* kmalloc/kfree
-# Device Drivers Subsystem
+# Abstract Data Types
-* POSIX devices
-* POSIX API Review
-* VFS
-* Linux Device Model
+* Macros
+* krefs
+* Endianness
+* Lists
+* Bitmaps
+* Trees/hashes
+* Other data types
# Character Device
+* VFS
* Device Numbers
* Registering File Operations
* Implementing File Operations
-* Memory Allocation and Concurrency
# Debugging
+* printk
* Proc Filesystem
* Debug Filesystem
-* Linux Debugging Support
-
-# Abstract Data Types
+* Other Mechanisms
-* Lists
-* Bitmaps
-* Other data types
-
-# Portability Issues
-
-* Endianness
-* Type Sizes
-* Processors and Memory Layout
-
-# Memory Management
-
-* kmalloc/kfree
-* Memory Access
-* Lookaside cache (slabs)
-* vmalloc
-
-# Process and Concurrency Management
+# Processes Introduction
* Contexts
* Interrupts
* Bottom Halves and SoftIRQs
-* Timers, tasklets and workqueues
+* SMP
+* Interruption
+* Preemption
# Concurrency
+* Race conditions
* Semaphores and Mutexes
* Spinlocks
+* Atomic type
+* Per CPU variables
+* RCU
+* Others
* Completion
* Waitqueues
# Time Management
-* Ticks and Jiffies
+* Ticks, jiffies and the scheduler
* Real Time
* Busy Waiting
* Scheduling
* Timers
* Workqueues
+* High Resolution Timers
-# Advanced Character Device
-
-* ioctl
-* Blocking and Non-Blocking I/O
-* Polling
-
-# I/O
+# Memory Management
-* I/O Ports and I/O Memory
-* Memory Barriers
-* Allocation
-* Access
+* Memory Basics
+* Memory Bootstrap
+* kmalloc/kfree
+* Lookaside cache (slabs)
+* vmalloc
+* kmap
+* Memory Subsystem
+* User Space access
# Interrupts
+* Hardware interrupts
* Requesting and releasing
* Interrupt Handler
* tasklets
-* Enabling and disabling interrupts
+
+# Memory Mapping
+
+* Memory Coherency
+* get\\_free\\_pages
+* struct page
+* scather/gather
+* VMA and mmap
+* DMA
# Device Model
* Devices, drivers, buses and classes
* sysfs
+# I/O
+
+* I/O Ports and I/O Memory
+* Memory Barriers
+* Allocation
+* Access
+
# Buses
* PCI
* USB
* Other buses
-# Memory Mapping
-
-* Memory Addresses
-* get\\_free\\_pages
-* struct page
-* scather/gather
-* VMA and mmap
-* DMA
-
# Block devices
* Block drivers and operations
* Reception
* Interrupts and NAPI
* Links, Addresses and Headers
+
+# Network Protocols
+
+* Registration
+* Operations