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

Unified Diff: src/platform/vboot_reference/utility/cgpt/cgpt_show.c

Issue 2614002: Enable attributes to display and set properly. (Closed) Base URL: ssh://git@chromiumos-git/chromeos
Patch Set: Created 10 years, 7 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
Index: src/platform/vboot_reference/utility/cgpt/cgpt_show.c
diff --git a/src/platform/vboot_reference/utility/cgpt/cgpt_show.c b/src/platform/vboot_reference/utility/cgpt/cgpt_show.c
index b7348aa08b2d6fff218b2bb9f892b9d27a5283fb..2dfad40e665d84ce38104dc833cbdbecddd937e9 100644
--- a/src/platform/vboot_reference/utility/cgpt/cgpt_show.c
+++ b/src/platform/vboot_reference/utility/cgpt/cgpt_show.c
@@ -88,11 +88,11 @@ static void RawDump(const uint8_t *memory, const int size,
#define PARTITION_FMT "%10d%10d%8d %s\n"
#define PARTITION_MORE "%10s%10s%8s %s%s\n", "", "", ""
-static void HeaderDetails(GptHeader *header, const char *indent) {
+static void HeaderDetails(GptHeader *header, const char *indent, int raw) {
int i;
printf("%sSig: ", indent);
- if (number == NOT_INITED) {
+ if (raw == NOT_INITED) {
printf("[");
for (i = 0; i < sizeof(header->signature); ++i)
printf("%c", header->signature[i]);
@@ -123,52 +123,66 @@ static void HeaderDetails(GptHeader *header, const char *indent) {
printf("%sEntries CRC: 0x%08x\n", indent, header->entries_crc32);
}
-void EntriesDetails(GptData *gpt, const int secondary) {
- int i;
-
- for (i = 0; i < GetNumberOfEntries(gpt); ++i) {
- static Guid unused = GPT_ENT_TYPE_UNUSED;
- char contents[256];
+void EntryDetails(GptEntry *entry, int index, int raw) {
+ char contents[256];
- GptEntry *entry;
- entry = GetEntry(gpt, secondary, i);
+ if (raw == NOT_INITED) {
+ uint8_t label[sizeof(entry->name) * 3 / 2];
+ char type[GUID_STRLEN], unique[GUID_STRLEN];;
- if (!Memcmp(&unused, &entry->type, sizeof(unused))) continue;
-
- if (number == NOT_INITED) {
- uint8_t label[sizeof(entry->name) * 3 / 2];
- char type[GUID_STRLEN], unique[GUID_STRLEN];;
-
- UTF16ToUTF8(entry->name, label);
- snprintf(contents, sizeof(contents), "Label: \"%s\"", label);
- printf(PARTITION_FMT, (int)entry->starting_lba,
- (int)(entry->ending_lba - entry->starting_lba + 1),
- i, contents);
- if (CGPT_OK == ResolveType(&entry->type, type)) {
- printf(PARTITION_MORE, "Type: ", type);
- } else {
- GuidToStr(&entry->type, type);
- printf(PARTITION_MORE, "Type: ", type);
- }
- GuidToStr(&entry->unique, unique);
- printf(PARTITION_MORE, "UUID: ", unique);
+ UTF16ToUTF8(entry->name, label);
+ snprintf(contents, sizeof(contents), "Label: \"%s\"", label);
+ printf(PARTITION_FMT, (int)entry->starting_lba,
+ (int)(entry->ending_lba - entry->starting_lba + 1),
+ index+1, contents);
+ if (CGPT_OK == ResolveType(&entry->type, type)) {
+ printf(PARTITION_MORE, "Type: ", type);
} else {
- char label[BUFFER_SIZE(sizeof(entry->name))];
- char type[GUID_STRLEN], unique[GUID_STRLEN],
- attributes[BUFFER_SIZE(sizeof(uint64_t))];
-
- RawDump((void*)entry->name, sizeof(entry->name), label, 2);
- snprintf(contents, sizeof(contents), "Label: %s", label);
- printf(PARTITION_FMT, (int)entry->starting_lba,
- (int)(entry->ending_lba - entry->starting_lba + 1),
- i, contents);
GuidToStr(&entry->type, type);
printf(PARTITION_MORE, "Type: ", type);
- GuidToStr(&entry->unique, unique);
- printf(PARTITION_MORE, "UUID: ", unique);
- RawDump((uint8_t*)&entry->attributes, 8, attributes, 4);
- printf(PARTITION_MORE, "Attr: ", attributes);
}
+ GuidToStr(&entry->unique, unique);
+ printf(PARTITION_MORE, "UUID: ", unique);
+ if (!Memcmp(&guid_chromeos_kernel, &entry->type, sizeof(Guid))) {
+ int tries = (entry->attributes & CGPT_ATTRIBUTE_TRIES_MASK) >>
+ CGPT_ATTRIBUTE_TRIES_OFFSET;
Randall Spangler 2010/06/03 22:29:50 Should these line up with the ( above?
+ int successful = (entry->attributes & CGPT_ATTRIBUTE_SUCCESSFUL_MASK) >>
+ CGPT_ATTRIBUTE_SUCCESSFUL_OFFSET;
+ int priority = (entry->attributes & CGPT_ATTRIBUTE_PRIORITY_MASK) >>
+ CGPT_ATTRIBUTE_PRIORITY_OFFSET;
+ snprintf(contents, sizeof(contents),
+ "priority=%d tries=%d successful=%d",
+ priority, tries, successful);
+ printf(PARTITION_MORE, "Attr: ", contents);
+ }
+ } else {
+ char label[BUFFER_SIZE(sizeof(entry->name))];
+ char type[GUID_STRLEN], unique[GUID_STRLEN];
+
+ RawDump((void*)entry->name, sizeof(entry->name), label, 2);
+ snprintf(contents, sizeof(contents), "Label: %s", label);
+ printf(PARTITION_FMT, (int)entry->starting_lba,
+ (int)(entry->ending_lba - entry->starting_lba + 1),
+ index+1, contents);
+ GuidToStr(&entry->type, type);
+ printf(PARTITION_MORE, "Type: ", type);
+ GuidToStr(&entry->unique, unique);
+ printf(PARTITION_MORE, "UUID: ", unique);
+ snprintf(contents, sizeof(contents), "[%016lx]", entry->attributes);
+ printf(PARTITION_MORE, "Attr: ", contents);
+ }
+}
+
+void EntriesDetails(GptData *gpt, const int secondary, int raw) {
+ int i;
+
+ for (i = 0; i < GetNumberOfEntries(gpt); ++i) {
+ GptEntry *entry;
+ entry = GetEntry(gpt, secondary, i);
+
+ if (!Memcmp(&guid_unused, &entry->type, sizeof(Guid))) continue;
+
+ EntryDetails(entry, i, raw);
}
}
@@ -216,7 +230,7 @@ int CgptShow(int argc, char *argv[]) {
if (CGPT_OK != OpenDriveInLastArgument(argc, argv, &drive))
return CGPT_FAILED;
- printf(TITLE_FMT, "start", "size", "index", "contents");
+ printf(TITLE_FMT, "start", "size", "part", "contents");
printf(GPT_FMT, 0, GPT_PMBR_SECTOR, "", "PMBR");
if (drive.gpt.valid_headers & MASK_PRIMARY) {
@@ -228,7 +242,7 @@ int CgptShow(int argc, char *argv[]) {
snprintf(indent, sizeof(indent), GPT_MORE);
header = (GptHeader*)drive.gpt.primary_header;
- HeaderDetails(header, indent);
+ HeaderDetails(header, indent, number);
}
} else {
printf(GPT_FMT, (int)GPT_PMBR_SECTOR,
@@ -241,7 +255,7 @@ int CgptShow(int argc, char *argv[]) {
"Pri GPT table");
if (drive.gpt.valid_entries & MASK_PRIMARY)
- EntriesDetails(&drive.gpt, PRIMARY);
+ EntriesDetails(&drive.gpt, PRIMARY, number);
printf(GPT_FMT, (int)(drive.gpt.drive_sectors - GPT_HEADER_SECTOR -
GPT_ENTRIES_SECTORS),
@@ -256,7 +270,7 @@ int CgptShow(int argc, char *argv[]) {
(!(drive.gpt.valid_entries & MASK_PRIMARY) ||
Memcmp(drive.gpt.primary_entries, drive.gpt.secondary_entries,
TOTAL_ENTRIES_SIZE))) {
- EntriesDetails(&drive.gpt, SECONDARY);
+ EntriesDetails(&drive.gpt, SECONDARY, number);
}
if (drive.gpt.valid_headers & MASK_SECONDARY)
@@ -279,7 +293,7 @@ int CgptShow(int argc, char *argv[]) {
snprintf(indent, sizeof(indent), GPT_MORE);
header = (GptHeader*)drive.gpt.secondary_header;
- HeaderDetails(header, indent);
+ HeaderDetails(header, indent, number);
}
}

Powered by Google App Engine
This is Rietveld 408576698