| Index: src/platform/vboot_reference/cgptlib/cgpt.h
|
| diff --git a/src/platform/vboot_reference/cgptlib/cgpt.h b/src/platform/vboot_reference/cgptlib/cgpt.h
|
| index bc81fd6289cec9401d4ef75328a5bcf3e42d7241..1f9f2305150c20a50f0552af68390657b26099c3 100644
|
| --- a/src/platform/vboot_reference/cgptlib/cgpt.h
|
| +++ b/src/platform/vboot_reference/cgptlib/cgpt.h
|
| @@ -16,6 +16,7 @@ enum {
|
| GPT_ERROR_INVALID_ENTRIES,
|
| GPT_ERROR_INVALID_SECTOR_SIZE,
|
| GPT_ERROR_INVALID_SECTOR_NUMBER,
|
| + GPT_ERROR_INVALID_UPDATE_TYPE,
|
| };
|
|
|
| /* Bit masks for GptData.modified field. */
|
| @@ -24,12 +25,18 @@ enum {
|
| #define GPT_MODIFIED_ENTRIES1 0x04
|
| #define GPT_MODIFIED_ENTRIES2 0x08
|
|
|
| -#define GPT_UPDATE_ENTRY_TRY 1
|
| +/* 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 {
|
| + GPT_UPDATE_ENTRY_TRY = 1,
|
| /* System will be trying to boot the currently selected kernel partition.
|
| * Update its try count if necessary. */
|
| -#define GPT_UPDATE_ENTRY_BAD 2
|
| + GPT_UPDATE_ENTRY_BAD = 2,
|
| /* The currently selected kernel partition failed validation. Mark entry as
|
| * invalid. */
|
| +};
|
|
|
| /* Defines ChromeOS-specific limitation on GPT */
|
| #define MIN_SIZE_OF_HEADER 92
|
| @@ -79,17 +86,25 @@ typedef struct {
|
| * 0x08 = table2 */
|
|
|
| /* Internal state */
|
| - uint8_t current_kernel; /* the current kernel index */
|
| + int current_kernel; /* the current chromeos kernel index in partition table.
|
| + * -1 means not found on drive. */
|
| } GptData;
|
|
|
| int GptInit(GptData *gpt);
|
| -/* Initializes the GPT data structure's internal state. The header1, header2,
|
| - * table1, table2, and drive_size fields should be filled in first.
|
| +/* 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 0 if successful, non-zero if error:
|
| + * 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
|
| @@ -104,7 +119,7 @@ int GptNextKernelEntry(GptData *gpt, uint64_t *start_sector, uint64_t *size);
|
| * for the start of the kernel partition, and the size parameter contains the
|
| * size of the kernel partition in LBA sectors.
|
| *
|
| - * Returns 0 if successful, else
|
| + * Returns GPT_SUCCESS if successful, else
|
| * GPT_ERROR_NO_VALID_KERNEL, no avaliable kernel, enters recovery mode */
|
|
|
| int GptUpdateKernelEntry(GptData *gpt, uint32_t update_type);
|
| @@ -114,6 +129,8 @@ int GptUpdateKernelEntry(GptData *gpt, uint32_t update_type);
|
| * On return the modified field may be set, if the GPT data has been modified
|
| * and should be written to disk.
|
| *
|
| - * Returns 0 if successful, 1 if error. */
|
| + * Returns GPT_SUCCESS if successful, else
|
| + * GPT_ERROR_INVALID_UPDATE_TYPE, invalid 'update_type' is given.
|
| + */
|
|
|
| #endif /* VBOOT_REFERENCE_CGPT_H_ */
|
|
|