kernel

This is an old revision of the document!


Kernel headers should be copied into /usr/include to be used by libraries and compiled programs. These should be the headers glibc has been compiled against, and should be kept independent of the ones in the kernel source tree. New packages are compiled against these headers, otherwise, if packages are compiled against headers that do not match the headers glibc was compiled against, segfaults or other strange problems may appear. /usr/include headers should be what matches the library object files. By copying the headers instead of symlink them to /usr/src/<linux>/include, we make sure that they remain available if we upgrade our kernel.

Process State

  • TASK_RUNNING, either running or in a runqueue waiting to run. Only possible state for a process executing in user-space.
  • TASK_INTERRUPTIBLE, process blocked, waiting for some condition to exist.
  • TASK_UNINTERRUPTIBLE, like TASK_INTERRUPTIBLE but without responding to signals.
  • TASK_TRACED
  • TASK_STOPPED

Process Context

A program running in user-space executes a system call or triggers an exception, making the kernel to run in process context.

There is also interrupt context, mostly applied to when the system is executing an interrupt handler (no process is tied to interrupt handlers). Other examples are the execution of a softirq as well as initializing or running the scheduler.

The Kernel may also run kernel threads, standard processes that exist only in kernel-space, like management threads that maintain the buffer and page caches. These processes are scheduled like normal processes and are allowed to sleep.

Debugging

ARM specific files

arch/arm/kernel
         lib
         boot
         tools/mach-types     machine ID
include/asm-arm               header files

Useful links

  • kernel.1335902625.txt.gz
  • Last modified: 14 years ago
  • by admin