Commit | Line | Data |
---|---|---|
ae9d8845 MR |
1 | =========================== |
2 | Boot time memory management | |
3 | =========================== | |
4 | ||
5 | Early system initialization cannot use "normal" memory management | |
6 | simply because it is not set up yet. But there is still need to | |
7 | allocate memory for various data structures, for instance for the | |
530d4c0c | 8 | physical page allocator. |
ae9d8845 | 9 | |
530d4c0c MR |
10 | A specialized allocator called ``memblock`` performs the |
11 | boot time memory management. The architecture specific initialization | |
12 | must set it up in :c:func:`setup_arch` and tear it down in | |
13 | :c:func:`mem_init` functions. | |
ae9d8845 MR |
14 | |
15 | Once the early memory management is available it offers a variety of | |
16 | functions and macros for memory allocations. The allocation request | |
17 | may be directed to the first (and probably the only) node or to a | |
18 | particular node in a NUMA system. There are API variants that panic | |
530d4c0c | 19 | when an allocation fails and those that don't. |
ae9d8845 | 20 | |
530d4c0c | 21 | Memblock also offers a variety of APIs that control its own behaviour. |
ae9d8845 | 22 | |
530d4c0c MR |
23 | Memblock Overview |
24 | ================= | |
ae9d8845 MR |
25 | |
26 | .. kernel-doc:: mm/memblock.c | |
27 | :doc: memblock overview | |
28 | ||
29 | ||
30 | Functions and structures | |
31 | ======================== | |
32 | ||
ae9d8845 MR |
33 | Here is the description of memblock data structures, functions and |
34 | macros. Some of them are actually internal, but since they are | |
35 | documented it would be silly to omit them. Besides, reading the | |
36 | descriptions for the internal functions can help to understand what | |
37 | really happens under the hood. | |
38 | ||
39 | .. kernel-doc:: include/linux/memblock.h | |
40 | .. kernel-doc:: mm/memblock.c | |
ad98b602 | 41 | :functions: |