1*8617a60dSAndroid Build Coastguard Worker /* Copyright 2013 The ChromiumOS Authors 2*8617a60dSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 3*8617a60dSAndroid Build Coastguard Worker * found in the LICENSE file. 4*8617a60dSAndroid Build Coastguard Worker */ 5*8617a60dSAndroid Build Coastguard Worker 6*8617a60dSAndroid Build Coastguard Worker #ifndef VBOOT_REFERENCE_CGPT_PARAMS_H_ 7*8617a60dSAndroid Build Coastguard Worker #define VBOOT_REFERENCE_CGPT_PARAMS_H_ 8*8617a60dSAndroid Build Coastguard Worker 9*8617a60dSAndroid Build Coastguard Worker #include <stdint.h> 10*8617a60dSAndroid Build Coastguard Worker 11*8617a60dSAndroid Build Coastguard Worker #include "gpt.h" 12*8617a60dSAndroid Build Coastguard Worker 13*8617a60dSAndroid Build Coastguard Worker #ifdef __cplusplus 14*8617a60dSAndroid Build Coastguard Worker extern "C" { 15*8617a60dSAndroid Build Coastguard Worker #endif /* __cplusplus */ 16*8617a60dSAndroid Build Coastguard Worker 17*8617a60dSAndroid Build Coastguard Worker enum { 18*8617a60dSAndroid Build Coastguard Worker CGPT_OK = 0, 19*8617a60dSAndroid Build Coastguard Worker CGPT_FAILED, 20*8617a60dSAndroid Build Coastguard Worker }; 21*8617a60dSAndroid Build Coastguard Worker 22*8617a60dSAndroid Build Coastguard Worker typedef struct CgptCreateParams { 23*8617a60dSAndroid Build Coastguard Worker const char *drive_name; 24*8617a60dSAndroid Build Coastguard Worker uint64_t drive_size; 25*8617a60dSAndroid Build Coastguard Worker int zap; 26*8617a60dSAndroid Build Coastguard Worker uint64_t padding; 27*8617a60dSAndroid Build Coastguard Worker } CgptCreateParams; 28*8617a60dSAndroid Build Coastguard Worker 29*8617a60dSAndroid Build Coastguard Worker typedef struct CgptAddParams { 30*8617a60dSAndroid Build Coastguard Worker const char *drive_name; 31*8617a60dSAndroid Build Coastguard Worker uint64_t drive_size; 32*8617a60dSAndroid Build Coastguard Worker uint32_t partition; 33*8617a60dSAndroid Build Coastguard Worker uint64_t begin; 34*8617a60dSAndroid Build Coastguard Worker uint64_t size; 35*8617a60dSAndroid Build Coastguard Worker Guid type_guid; 36*8617a60dSAndroid Build Coastguard Worker Guid unique_guid; 37*8617a60dSAndroid Build Coastguard Worker const char *label; 38*8617a60dSAndroid Build Coastguard Worker int error_counter; 39*8617a60dSAndroid Build Coastguard Worker int successful; 40*8617a60dSAndroid Build Coastguard Worker int tries; 41*8617a60dSAndroid Build Coastguard Worker int priority; 42*8617a60dSAndroid Build Coastguard Worker int required; 43*8617a60dSAndroid Build Coastguard Worker int legacy_boot; 44*8617a60dSAndroid Build Coastguard Worker uint32_t raw_value; 45*8617a60dSAndroid Build Coastguard Worker int set_begin; 46*8617a60dSAndroid Build Coastguard Worker int set_size; 47*8617a60dSAndroid Build Coastguard Worker int set_type; 48*8617a60dSAndroid Build Coastguard Worker int set_unique; 49*8617a60dSAndroid Build Coastguard Worker int set_error_counter; 50*8617a60dSAndroid Build Coastguard Worker int set_successful; 51*8617a60dSAndroid Build Coastguard Worker int set_tries; 52*8617a60dSAndroid Build Coastguard Worker int set_priority; 53*8617a60dSAndroid Build Coastguard Worker int set_required; 54*8617a60dSAndroid Build Coastguard Worker int set_legacy_boot; 55*8617a60dSAndroid Build Coastguard Worker int set_raw; 56*8617a60dSAndroid Build Coastguard Worker } CgptAddParams; 57*8617a60dSAndroid Build Coastguard Worker 58*8617a60dSAndroid Build Coastguard Worker typedef struct CgptEditParams { 59*8617a60dSAndroid Build Coastguard Worker const char *drive_name; 60*8617a60dSAndroid Build Coastguard Worker uint64_t drive_size; 61*8617a60dSAndroid Build Coastguard Worker Guid unique_guid; 62*8617a60dSAndroid Build Coastguard Worker int set_unique; 63*8617a60dSAndroid Build Coastguard Worker } CgptEditParams; 64*8617a60dSAndroid Build Coastguard Worker 65*8617a60dSAndroid Build Coastguard Worker typedef struct CgptShowParams { 66*8617a60dSAndroid Build Coastguard Worker const char *drive_name; 67*8617a60dSAndroid Build Coastguard Worker uint64_t drive_size; 68*8617a60dSAndroid Build Coastguard Worker int numeric; 69*8617a60dSAndroid Build Coastguard Worker int verbose; 70*8617a60dSAndroid Build Coastguard Worker int quick; 71*8617a60dSAndroid Build Coastguard Worker uint32_t partition; 72*8617a60dSAndroid Build Coastguard Worker int single_item; 73*8617a60dSAndroid Build Coastguard Worker int debug; 74*8617a60dSAndroid Build Coastguard Worker int num_partitions; 75*8617a60dSAndroid Build Coastguard Worker } CgptShowParams; 76*8617a60dSAndroid Build Coastguard Worker 77*8617a60dSAndroid Build Coastguard Worker typedef struct CgptRepairParams { 78*8617a60dSAndroid Build Coastguard Worker const char *drive_name; 79*8617a60dSAndroid Build Coastguard Worker uint64_t drive_size; 80*8617a60dSAndroid Build Coastguard Worker int verbose; 81*8617a60dSAndroid Build Coastguard Worker } CgptRepairParams; 82*8617a60dSAndroid Build Coastguard Worker 83*8617a60dSAndroid Build Coastguard Worker typedef struct CgptBootParams { 84*8617a60dSAndroid Build Coastguard Worker const char *drive_name; 85*8617a60dSAndroid Build Coastguard Worker uint64_t drive_size; 86*8617a60dSAndroid Build Coastguard Worker uint32_t partition; 87*8617a60dSAndroid Build Coastguard Worker const char *bootfile; 88*8617a60dSAndroid Build Coastguard Worker int create_pmbr; 89*8617a60dSAndroid Build Coastguard Worker } CgptBootParams; 90*8617a60dSAndroid Build Coastguard Worker 91*8617a60dSAndroid Build Coastguard Worker typedef struct CgptPrioritizeParams { 92*8617a60dSAndroid Build Coastguard Worker const char *drive_name; 93*8617a60dSAndroid Build Coastguard Worker uint64_t drive_size; 94*8617a60dSAndroid Build Coastguard Worker uint32_t set_partition; 95*8617a60dSAndroid Build Coastguard Worker int set_friends; 96*8617a60dSAndroid Build Coastguard Worker int max_priority; 97*8617a60dSAndroid Build Coastguard Worker int orig_priority; 98*8617a60dSAndroid Build Coastguard Worker } CgptPrioritizeParams; 99*8617a60dSAndroid Build Coastguard Worker 100*8617a60dSAndroid Build Coastguard Worker struct CgptFindParams; 101*8617a60dSAndroid Build Coastguard Worker typedef void (*CgptFindShowFn)(struct CgptFindParams *params, 102*8617a60dSAndroid Build Coastguard Worker const char *filename, int partnum, 103*8617a60dSAndroid Build Coastguard Worker GptEntry *entry); 104*8617a60dSAndroid Build Coastguard Worker typedef struct CgptFindParams { 105*8617a60dSAndroid Build Coastguard Worker const char *drive_name; 106*8617a60dSAndroid Build Coastguard Worker uint64_t drive_size; 107*8617a60dSAndroid Build Coastguard Worker int verbose; 108*8617a60dSAndroid Build Coastguard Worker int set_unique; 109*8617a60dSAndroid Build Coastguard Worker int set_type; 110*8617a60dSAndroid Build Coastguard Worker int set_label; 111*8617a60dSAndroid Build Coastguard Worker int oneonly; 112*8617a60dSAndroid Build Coastguard Worker int numeric; 113*8617a60dSAndroid Build Coastguard Worker uint8_t *matchbuf; 114*8617a60dSAndroid Build Coastguard Worker uint64_t matchlen; 115*8617a60dSAndroid Build Coastguard Worker uint64_t matchoffset; 116*8617a60dSAndroid Build Coastguard Worker uint8_t *comparebuf; 117*8617a60dSAndroid Build Coastguard Worker Guid unique_guid; 118*8617a60dSAndroid Build Coastguard Worker Guid type_guid; 119*8617a60dSAndroid Build Coastguard Worker const char *label; 120*8617a60dSAndroid Build Coastguard Worker int hits; 121*8617a60dSAndroid Build Coastguard Worker int match_partnum; /* 1-based; 0 means no match */ 122*8617a60dSAndroid Build Coastguard Worker /* when working with MTD, we actually work on a temp file, but we still 123*8617a60dSAndroid Build Coastguard Worker * need to print the device name. so this parameter is here to properly 124*8617a60dSAndroid Build Coastguard Worker * show the correct device name in that special case. */ 125*8617a60dSAndroid Build Coastguard Worker CgptFindShowFn show_fn; 126*8617a60dSAndroid Build Coastguard Worker } CgptFindParams; 127*8617a60dSAndroid Build Coastguard Worker 128*8617a60dSAndroid Build Coastguard Worker enum { 129*8617a60dSAndroid Build Coastguard Worker CGPT_LEGACY_MODE_LEGACY = 0, 130*8617a60dSAndroid Build Coastguard Worker CGPT_LEGACY_MODE_EFIPART, 131*8617a60dSAndroid Build Coastguard Worker CGPT_LEGACY_MODE_IGNORE_PRIMARY, 132*8617a60dSAndroid Build Coastguard Worker }; 133*8617a60dSAndroid Build Coastguard Worker 134*8617a60dSAndroid Build Coastguard Worker typedef struct CgptLegacyParams { 135*8617a60dSAndroid Build Coastguard Worker const char *drive_name; 136*8617a60dSAndroid Build Coastguard Worker uint64_t drive_size; 137*8617a60dSAndroid Build Coastguard Worker int mode; 138*8617a60dSAndroid Build Coastguard Worker } CgptLegacyParams; 139*8617a60dSAndroid Build Coastguard Worker 140*8617a60dSAndroid Build Coastguard Worker #ifdef __cplusplus 141*8617a60dSAndroid Build Coastguard Worker } 142*8617a60dSAndroid Build Coastguard Worker #endif /* __cplusplus */ 143*8617a60dSAndroid Build Coastguard Worker 144*8617a60dSAndroid Build Coastguard Worker #endif /* VBOOT_REFERENCE_CGPT_PARAMS_H_ */ 145