[U-Boot] [PATCH] part: show efi partition name when print out partition info
Lei Wen
leiwen at marvell.com
Wed Sep 7 13:17:03 CEST 2011
Previous output:
Marvell>> mmc part
Partition Map for MMC device 1 -- Partition Type: EFI
Part Start LBA End LBA
gpt1 0x8C00 0xCBFF
gpt2 0xCC00 0x57BFF
gpt3 0x57C00 0xA2BFF
gpt4 0xA2C00 0xECBFDE
With the patch, the output becomes:
Marvell>> mmc part
Partition Map for MMC device 1 -- Partition Type: EFI
Part Name Start LBA End LBA
1 ramdisk 0x00008C00 0x0000CBFF
2 system 0x0000CC00 0x00057BFF
3 userdata 0x00057C00 0x000A2BFF
4 remaining 0x000A2C00 0x00ECBFDE
Signed-off-by: Lei Wen <leiwen at marvell.com>
---
disk/part_efi.c | 24 ++++++++++++++++++++----
1 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/disk/part_efi.c b/disk/part_efi.c
index 1b04c27..9e2a0dd 100644
--- a/disk/part_efi.c
+++ b/disk/part_efi.c
@@ -35,6 +35,7 @@
#include <ide.h>
#include <malloc.h>
#include "part_efi.h"
+#include <linux/ctype.h>
#if defined(CONFIG_CMD_IDE) || \
defined(CONFIG_CMD_MG_DISK) || \
@@ -99,6 +100,20 @@ static gpt_entry *alloc_read_gpt_entries(block_dev_desc_t * dev_desc,
static int is_pte_valid(gpt_entry * pte);
+static char *print_efiname(gpt_entry *pte)
+{
+ static char name[37];
+ int i;
+ for (i = 0; i < 37; i++) {
+ u8 c;
+ c = pte->partition_name[i] & 0xff;
+ c = (c && !isprint(c)) ? '!' : c;
+ name[i] = c;
+ }
+ name[36] = 0;
+ return name;
+}
+
/*
* Public Functions (include/part.h)
*/
@@ -122,12 +137,12 @@ void print_part_efi(block_dev_desc_t * dev_desc)
debug("%s: gpt-entry at 0x%08X\n", __FUNCTION__, (unsigned int)*pgpt_pte);
- printf("Part Start LBA End LBA\n");
+ printf("Part\t\tName\t\tStart LBA\tEnd LBA\n");
for (i = 0; i < le32_to_int(gpt_head.num_partition_entries); i++) {
if (is_pte_valid(&(*pgpt_pte)[i])) {
- printf("%s%d 0x%llX 0x%llX\n", GPT_ENTRY_NAME,
- (i + 1),
+ printf("%2d\t%18s\t0x%08llX\t0x%08llX\n", (i + 1),
+ print_efiname(&(*pgpt_pte)[i]),
le64_to_int((*pgpt_pte)[i].starting_lba),
le64_to_int((*pgpt_pte)[i].ending_lba));
} else {
@@ -169,7 +184,8 @@ int get_partition_info_efi(block_dev_desc_t * dev_desc, int part,
- info->start;
info->blksz = GPT_BLOCK_SIZE;
- sprintf((char *)info->name, "%s%d", GPT_ENTRY_NAME, part);
+ sprintf((char *)info->name, "%s",
+ print_efiname(&(*pgpt_pte)[part - 1]));
sprintf((char *)info->type, "U-Boot");
debug("%s: start 0x%lX, size 0x%lX, name %s", __FUNCTION__,
--
1.7.0.4
More information about the U-Boot
mailing list