blob: 99a4761b6441356885cfc456d43966345ec82685 [file] [log] [blame]
Patrick Georgiea063cb2020-05-08 19:28:13 +02001/* fmap_sections.h, track which sections of the image will contain CBFSes */
Patrick Georgi7333a112020-05-08 20:48:04 +02002/* SPDX-License-Identifier: GPL-2.0-only */
Sol Boucher023e8292015-03-18 10:13:48 -07003
4#ifndef CBFS_SECTIONS_H_
5#define CBFS_SECTIONS_H_
6
7#include "fmd.h"
8
9#include <stdbool.h>
10
11#define SECTION_NAME_FMAP "FMAP"
12#define SECTION_NAME_PRIMARY_CBFS "COREBOOT"
Julius Werner4bfbabd2020-05-06 17:27:02 -070013#define SECTION_NAME_BOOTBLOCK "BOOTBLOCK"
Sol Boucher023e8292015-03-18 10:13:48 -070014
15#define SECTION_ANNOTATION_CBFS "CBFS"
16
17typedef const struct descriptor_node *cbfs_section_iterator_t;
18
19/** @return Iterator pointing to first CBFS section, or NULL if none exist */
20cbfs_section_iterator_t cbfs_sections_iterator(void);
21
22/**
23 * Advance iterator to point to the next CBFS section.
24 * If it was already pointing to the last such section, it will be set to NULL.
25 *
26 * @param it (Non-NULL) pointer to (possibly NULL) iterator to be updated
27 * @return Whether it was successfully advanced (wasn't already NULL)
28 */
29bool cbfs_sections_iterator_advance(cbfs_section_iterator_t *it);
30
31/**
32 * @param it Iterator, which must currently be non-NULL
33 * @return Section to which it points
34 */
35const struct flashmap_descriptor *cbfs_sections_iterator_deref(
36 cbfs_section_iterator_t it);
37
38/** @return Whether a section named SECTION_NAME_PRIMARY_CBFS is in the list. */
39bool cbfs_sections_primary_cbfs_accounted_for(void);
40
41/** Reclaim the space used to store knowledge of which sections are CBFSes. */
42void cbfs_sections_cleanup(void);
43
44#endif