Analyse and explore test_kconfig_linux
Architecture

Introduction to linux kernel architecture

As an introduction, we can identify the following layers of the Linux kernel (bottom to upper layer):

It also contains:

Architecture specific code

The architecture specific code is in the \arch folder. This contains a subfolder per processor architecture, like \arm or \x86 This contains low-level memory management, interrupt handling, assembly routines, executable and linking format code, and more.

Device drivers

Device drivers code can be found in several folders.

Network stack

The network stack code is in the \net folder. It contains code for the various network protocols.

Memory management

The memory management code is in the \mm folder. This includes: memory management at boot time, memory allocation, memory mapping of files, memory swap to hard disk, etc.

Process management and other Kernel code

The process management code is in the \kernel folder. This includes managing processes, threads, scheduling, stacks, signalling, Berkeley Packet Filter (BPF)...

File system

The File system code is in the \fs folder.

This includes

System call interface

The system call interface is the set of functions exposed by the kernel to the user space.

The functions are defined in the folder related to the functional domain. They rely on common code (with the possibility of using architecture specific code).

Initialization code

The \init folder contains the code used to startup of the kernel. Especially, the \init\main.c file is the starting point.

Cryptography and Security code

Security related code can be found in the following folders

Virtualization support

The \virt folder implements KVM (Kernel Base Virtual Machine).

Generated by PFA software prototype