Next
Previous Contents
The Linux kernel
Andries Brouwer,
aeb@cwi.nl
2003-02-01
Some remarks on the Linux Kernel
1.
Linux
1.1
History
1.2
Size
1.3
Hardware platforms
1.4
Authors
1.5
Users and marketshare
1.6
Name
1.7
Distributions
1.8
Copyright, Open Source, GPL
1.9
Literature and documentation
2.
The kernel source
2.1
Kernel versions
2.2
Obtaining the kernel source
2.3
Compiling the kernel
2.4
Booting a new kernel
2.5
Modules
2.6
Subsystems - layout of the tree
2.7
The C code
2.8
Logging kernel messages
2.9
Keyboard interface to the kernel
2.10
Profiling the kernel
2.11
Debugging the kernel
2.12
Submitting patches
2.13
Talking about the kernel
3.
User space and the libc interface
3.1
Application programs and C library
3.2
Kernel and user space
3.3
Error return conventions
3.4
Alternative C libraries
3.5
Initial userspace
3.6
Libraries and binary formats
4.
System Calls
4.1
System call numbers
4.2
The call
4.3
System call parameters
4.4
Error return
4.5
Interrupted system calls
4.6
Sysenter and the vsyscall page
5.
Signals
5.1
Sending signals
5.2
Receiving signals
5.3
Semantics
5.4
Blocking signals
5.5
Voodoo: wait and SIGCHLD
5.6
Returning from a signal handler
5.7
ptrace
5.8
The Linux "parent death" signal
6.
File names and files
6.1
The file hierarchy
6.2
The Unix filesystem model
6.3
The Linux filesystem model
6.4
Open files
6.5
Path names relative to a file descriptor
7.
Filesystems
7.1
FAT
7.2
Ext2
7.3
Journaling filesystems
7.4
NFS
7.5
The proc filesystem
7.6
A baby filesystem example
8.
The Linux Virtual File System
8.1
Terminology
8.2
Filesystem type registration
8.3
Struct file_system_type
8.4
Mounting
8.5
The superblock
8.6
Inodes
8.7
Dentries
8.8
Files
8.9
struct vfsmount
8.10
fs_struct
8.11
nameidata
9.
Memory
9.1
Physical and virtual memory
9.2
Kinds of memory
9.3
Kernel memory handling
9.4
i386 addressing
9.5
Reference
9.6
Overcommit and OOM
9.7
Stack overflow
10.
Processes
10.1
Processes
10.2
Process groups
10.3
Sessions
10.4
Threads
11.
Character devices
11.1
Registration
11.2
Opening
11.3
The tty driver
11.4
Raw devices
11.5
The random device
12.
Handling of asynchronous events
12.1
O_NONBLOCK
12.2
select
12.3
pselect
12.4
poll
12.5
epoll
12.6
dnotify
12.7
inotify
13.
Sysfs and kobjects
13.1
atomic_t
13.2
struct kref
13.3
struct kobject
13.4
struct kset
13.5
struct kobj_type
13.6
struct subsystem
13.7
struct kobj_map
13.8
Example: floppy
13.9
Hotplug
14.
Security
14.1
seccomp
Next
Previous Contents