LCOV - code coverage report
Current view: top level - zephyr/arch/x86 - memmap.h Hit Total Coverage
Test: new.info Lines: 0 15 0.0 %
Date: 2025-01-02 12:14:04

          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 1.14