LCOV - code coverage report
Current view: top level - zephyr/arch/x86 - memmap.h Coverage Total Hit
Test: new.info Lines: 0.0 % 15 0
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2019 Intel Corporation
       3              :  * SPDX-License-Identifier: Apache-2.0
       4              :  */
       5              : 
       6              : #ifndef ZEPHYR_INCLUDE_ARCH_X86_MEMMAP_H_
       7              : #define ZEPHYR_INCLUDE_ARCH_X86_MEMMAP_H_
       8              : 
       9              : #ifndef _ASMLANGUAGE
      10              : 
      11              : /*
      12              :  * The "source" of the memory map refers to where we got the data to fill in
      13              :  * the map. Order is important: if multiple sources are available, then the
      14              :  * numerically HIGHEST source wins, a manually-provided map being the "best".
      15              :  */
      16              : 
      17            0 : enum x86_memmap_source {
      18              :         X86_MEMMAP_SOURCE_DEFAULT,
      19              :         X86_MEMMAP_SOURCE_MULTIBOOT_MEM,
      20              :         X86_MEMMAP_SOURCE_MULTIBOOT_MMAP,
      21              :         X86_MEMMAP_SOURCE_MANUAL
      22              : };
      23              : 
      24            0 : extern enum x86_memmap_source x86_memmap_source;
      25              : 
      26              : /*
      27              :  * For simplicity, we maintain a fixed-sized array of memory regions.
      28              :  *
      29              :  * We don't only track available RAM -- we track unavailable regions, too:
      30              :  * sometimes we'll be given a map with overlapping regions. We have to be
      31              :  * pessimistic about what is considered "available RAM" and it's easier to
      32              :  * keep all the regions around than it is to correct incorrect maps. It's
      33              :  * also handy to have the entire map intact for diagnostic purposes.
      34              :  */
      35              : 
      36            0 : enum x86_memmap_entry_type {
      37              :         /*
      38              :          * the UNUSED entry must have a numerical 0 value, so
      39              :          * that partially-initialized arrays behave as expected.
      40              :          */
      41              : 
      42              :         X86_MEMMAP_ENTRY_UNUSED,        /* this entry is unused/invalid */
      43              :         X86_MEMMAP_ENTRY_RAM,           /* available RAM */
      44              :         X86_MEMMAP_ENTRY_ACPI,          /* reserved for ACPI */
      45              :         X86_MEMMAP_ENTRY_NVS,           /* preserve during hibernation */
      46              :         X86_MEMMAP_ENTRY_DEFECTIVE,     /* bad memory modules */
      47              :         X86_MEMMAP_ENTRY_UNKNOWN        /* unknown type, do not use */
      48              : };
      49              : 
      50            0 : struct x86_memmap_entry {
      51            0 :         uint64_t base;
      52            0 :         uint64_t length;
      53            0 :         enum x86_memmap_entry_type type;
      54              : };
      55              : 
      56            0 : extern struct x86_memmap_entry x86_memmap[];
      57              : 
      58              : /*
      59              :  * We keep track of kernel memory areas (text, data, etc.) in a table for
      60              :  * ease of reference. There's really no reason to export this table, or to
      61              :  * label the members, except for diagnostic purposes.
      62              :  */
      63              : 
      64            0 : struct x86_memmap_exclusion {
      65            0 :         char *name;
      66            0 :         void *start;            /* address of first byte of exclusion */
      67            0 :         void *end;              /* one byte past end of exclusion */
      68              : };
      69              : 
      70            0 : extern struct x86_memmap_exclusion x86_memmap_exclusions[];
      71            0 : extern int x86_nr_memmap_exclusions;
      72              : 
      73              : #endif /* _ASMLANGUAGE */
      74              : 
      75              : #endif /* ZEPHYR_INCLUDE_ARCH_X86_MEMMAP_H_ */
        

Generated by: LCOV version 2.0-1