Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(761)

Unified Diff: src/platform/vboot_reference/cgptlib/cgpt.h

Issue 1701017: Add more test cases for GptInit() and fixed some bugs (Closed)
Patch Set: refine for code review Created 10 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/platform/vboot_reference/cgptlib/cgpt.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 ba32bb053295af17b83154a83e8e6f399e15c6cd..bc81fd6289cec9401d4ef75328a5bcf3e42d7241 100644
--- a/src/platform/vboot_reference/cgptlib/cgpt.h
+++ b/src/platform/vboot_reference/cgptlib/cgpt.h
@@ -6,6 +6,7 @@
#ifndef VBOOT_REFERENCE_CGPT_H_
#define VBOOT_REFERENCE_CGPT_H_
+#include "gpt.h"
#include <stdint.h>
enum {
@@ -17,6 +18,7 @@ enum {
GPT_ERROR_INVALID_SECTOR_NUMBER,
};
+/* Bit masks for GptData.modified field. */
#define GPT_MODIFIED_HEADER1 0x01
#define GPT_MODIFIED_HEADER2 0x02
#define GPT_MODIFIED_ENTRIES1 0x04
@@ -29,7 +31,34 @@ enum {
/* The currently selected kernel partition failed validation. Mark entry as
* invalid. */
-struct GptData {
+/* Defines ChromeOS-specific limitation on GPT */
+#define MIN_SIZE_OF_HEADER 92
+#define MAX_SIZE_OF_HEADER 512
+#define MIN_SIZE_OF_ENTRY 128
+#define MAX_SIZE_OF_ENTRY 512
+#define SIZE_OF_ENTRY_MULTIPLE 8
+#define MIN_NUMBER_OF_ENTRIES 32
+#define MAX_NUMBER_OF_ENTRIES 512
+#define TOTAL_ENTRIES_SIZE 16384 /* usual case is 128 bytes * 128 entries */
+
+/* Defines GPT sizes */
+#define GPT_PMBR_SECTOR 1 /* size (in sectors) of PMBR */
+#define GPT_HEADER_SECTOR 1
+#define GPT_ENTRIES_SECTORS 32 /* assume sector size if 512 bytes, then
+ * (TOTAL_ENTRIES_SIZE / 512) = 32 */
+
+/* alias name of index in internal array for primary and secondary header and
+ * entries. */
+enum {
+ PRIMARY = 0,
+ SECONDARY = 1,
+ MASK_NONE = 0,
+ MASK_PRIMARY = 1,
+ MASK_SECONDARY = 2,
+ MASK_BOTH = 3,
+};
+
+typedef struct {
/* Fill in the following fields before calling GptInit() */
uint8_t *primary_header; /* GPT primary header, from sector 1 of disk
* (size: 512 bytes) */
@@ -51,10 +80,9 @@ struct GptData {
/* Internal state */
uint8_t current_kernel; /* the current kernel index */
-};
-typedef struct GptData GptData_t;
+} GptData;
-int GptInit(GptData_t *gpt);
+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.
*
@@ -70,7 +98,7 @@ int GptInit(GptData_t *gpt);
* GPT_ERROR_INVALID_SECTOR_NUMBER, number of sectors in drive is invalid (too
* small) */
-int GptNextKernelEntry(GptData_t *gpt, uint64_t *start_sector, uint64_t *size);
+int GptNextKernelEntry(GptData *gpt, uint64_t *start_sector, uint64_t *size);
/* Provides the location of the next kernel partition, in order of decreasing
* priority. On return the start_sector parameter contains the LBA sector
* for the start of the kernel partition, and the size parameter contains the
@@ -79,7 +107,7 @@ int GptNextKernelEntry(GptData_t *gpt, uint64_t *start_sector, uint64_t *size);
* Returns 0 if successful, else
* GPT_ERROR_NO_VALID_KERNEL, no avaliable kernel, enters recovery mode */
-int GptUpdateKernelEntry(GptData_t *gpt, uint32_t update_type);
+int GptUpdateKernelEntry(GptData *gpt, uint32_t update_type);
/* Updates the kernel entry with the specified index, using the specified type
* of update (GPT_UPDATE_ENTRY_*).
*
« no previous file with comments | « no previous file | src/platform/vboot_reference/cgptlib/cgpt.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698