summaryrefslogtreecommitdiff
path: root/firmware/lib/cgptlib/include/cgptlib.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/lib/cgptlib/include/cgptlib.h')
-rw-r--r--firmware/lib/cgptlib/include/cgptlib.h105
1 files changed, 1 insertions, 104 deletions
diff --git a/firmware/lib/cgptlib/include/cgptlib.h b/firmware/lib/cgptlib/include/cgptlib.h
index ef329783..968ec635 100644
--- a/firmware/lib/cgptlib/include/cgptlib.h
+++ b/firmware/lib/cgptlib/include/cgptlib.h
@@ -7,110 +7,7 @@
#define VBOOT_REFERENCE_CGPTLIB_H_
#include "sysincludes.h"
-
-enum {
- GPT_SUCCESS = 0,
- GPT_ERROR_NO_VALID_KERNEL,
- GPT_ERROR_INVALID_HEADERS,
- GPT_ERROR_INVALID_ENTRIES,
- GPT_ERROR_INVALID_SECTOR_SIZE,
- GPT_ERROR_INVALID_SECTOR_NUMBER,
- GPT_ERROR_INVALID_UPDATE_TYPE,
- GPT_ERROR_CRC_CORRUPTED,
- GPT_ERROR_OUT_OF_REGION,
- GPT_ERROR_START_LBA_OVERLAP,
- GPT_ERROR_END_LBA_OVERLAP,
- GPT_ERROR_DUP_GUID,
- GPT_ERROR_INVALID_FLASH_GEOMETRY,
- GPT_ERROR_NO_SUCH_ENTRY,
- /* Number of errors */
- GPT_ERROR_COUNT
-};
-
-/* Bit masks for GptData.modified field. */
-#define GPT_MODIFIED_HEADER1 0x01
-#define GPT_MODIFIED_HEADER2 0x02
-#define GPT_MODIFIED_ENTRIES1 0x04
-#define GPT_MODIFIED_ENTRIES2 0x08
-
-/*
- * Size of GptData.primary_entries and secondary_entries: 128 bytes/entry * 128
- * entries.
- */
-#define TOTAL_ENTRIES_SIZE 16384
-
-/*
- * The 'update_type' of GptUpdateKernelEntry(). We expose TRY and BAD only
- * because those are what verified boot needs. For more precise control on GPT
- * attribute bits, please refer to gpt_internal.h.
- */
-enum {
- /*
- * System will be trying to boot the currently selected kernel
- * partition. Update its try count if necessary.
- */
- GPT_UPDATE_ENTRY_TRY = 1,
- /*
- * The currently selected kernel partition failed validation. Mark
- * entry as invalid.
- */
- GPT_UPDATE_ENTRY_BAD = 2,
-};
-
-typedef struct {
- /* Fill in the following fields before calling GptInit() */
- /* GPT primary header, from sector 1 of disk (size: 512 bytes) */
- uint8_t *primary_header;
- /* GPT secondary header, from last sector of disk (size: 512 bytes) */
- uint8_t *secondary_header;
- /* Primary GPT table, follows primary header (size: 16 KB) */
- uint8_t *primary_entries;
- /* Secondary GPT table, precedes secondary header (size: 16 KB) */
- uint8_t *secondary_entries;
- /* Size of a LBA sector, in bytes */
- uint32_t sector_bytes;
- /* Size of drive in LBA sectors, in sectors */
- uint64_t drive_sectors;
-
- /* Outputs */
- /* Which inputs have been modified? GPT_MODIFIED_* */
- uint8_t modified;
- /*
- * The current chromeos kernel index in partition table. -1 means not
- * found on drive. Note that GPT partition numbers are traditionally
- * 1-based, but we're using a zero-based index here.
- */
- int current_kernel;
-
- /* Internal variables */
- uint32_t valid_headers, valid_entries;
- int current_priority;
-} GptData;
-
-/**
- * Initializes the GPT data structure's internal state.
- *
- * The following fields must be filled before calling this function:
- *
- * primary_header
- * secondary_header
- * primary_entries
- * secondary_entries
- * sector_bytes
- * drive_sectors
- *
- * On return the modified field may be set, if the GPT data has been modified
- * and should be written to disk.
- *
- * Returns GPT_SUCCESS if successful, non-zero if error:
- * GPT_ERROR_INVALID_HEADERS, both partition table headers are invalid, enters
- * recovery mode,
- * GPT_ERROR_INVALID_ENTRIES, both partition table entries are invalid, enters
- * recovery mode,
- * GPT_ERROR_INVALID_SECTOR_SIZE, size of a sector is not supported,
- * GPT_ERROR_INVALID_SECTOR_NUMBER, number of sectors in drive is invalid (too
- * small) */
-int GptInit(GptData *gpt);
+#include "gpt_misc.h"
/**
* Provides the location of the next kernel partition, in order of decreasing