Chromium Code Reviews| Index: utility/dump_fmap.c |
| diff --git a/utility/dump_fmap.c b/utility/dump_fmap.c |
| index ab92b82a28d463e00bdb6813f362273ae4e5ca2e..191359f23b638a90968a2554dc3839ca419191da 100644 |
| --- a/utility/dump_fmap.c |
| +++ b/utility/dump_fmap.c |
| @@ -15,39 +15,20 @@ |
| #include <sys/types.h> |
| #include <unistd.h> |
| +#include "fmap.h" |
| + |
| /* global variables */ |
| static int opt_extract = 0; |
| static char *progname; |
|
gauravsh
2011/02/10 20:02:05
(optional nit): for consistency with the rest of v
Che-Liang Chiou
2011/02/14 02:27:53
Done.
|
| static void *base_of_rom; |
| -/* FMAP structs. See http://code.google.com/p/flashmap/wiki/FmapSpec */ |
| -#define FMAP_SIGLEN 8 |
| -#define FMAP_NAMELEN 32 |
| -#define FMAP_SEARCH_STRIDE 4 |
| -typedef struct _FmapHeader { |
| - char fmap_signature[FMAP_SIGLEN]; /* avoiding endian issues */ |
| - uint8_t fmap_ver_major; |
| - uint8_t fmap_ver_minor; |
| - uint64_t fmap_base; |
| - uint32_t fmap_size; |
| - char fmap_name[FMAP_NAMELEN]; |
| - uint16_t fmap_nareas; |
| -} __attribute__((packed)) FmapHeader; |
| - |
| -typedef struct _AreaHeader { |
| - uint32_t area_offset; |
| - uint32_t area_size; |
| - char area_name[FMAP_NAMELEN]; |
| - uint16_t area_flags; |
| -} __attribute__((packed)) AreaHeader; |
| - |
| /* Return 0 if successful */ |
| -static int dump_fmap(void *ptr) { |
| +static int dump_fmap(const void *ptr) { |
|
gauravsh
2011/02/10 20:02:05
const void*
Che-Liang Chiou
2011/02/14 02:27:53
Done.
|
| int i,retval = 0; |
| char buf[80]; // DWR: magic number |
| - FmapHeader *fmh = (FmapHeader *)ptr; |
| - AreaHeader *ah = (AreaHeader *)(ptr + sizeof(FmapHeader)); |
| + const FmapHeader *fmh = (const FmapHeader *) ptr; |
|
Randall Spangler
2011/02/11 17:26:04
const FmapHeader* fmh
Che-Liang Chiou
2011/02/14 02:27:53
Done.
|
| + const FmapAreaHeader *ah = (const FmapAreaHeader *)(ptr + sizeof(FmapHeader)); |
| snprintf(buf, FMAP_SIGLEN+1, "%s", fmh->fmap_signature); |
| printf("fmap_signature %s\n", buf); |
| @@ -99,8 +80,7 @@ int main(int argc, char *argv[]) { |
| int errorcnt = 0; |
| struct stat sb; |
| int fd; |
| - char *s; |
| - size_t i; |
| + const char *fmap; |
|
gauravsh
2011/02/10 20:02:05
const char*
Che-Liang Chiou
2011/02/14 02:27:53
Done.
|
| int retval = 1; |
| progname = strrchr(argv[0], '/'); |
| @@ -170,14 +150,10 @@ int main(int argc, char *argv[]) { |
| } |
| close(fd); /* done with this now */ |
| - s = (char *)base_of_rom; |
| - for (i=0; i<sb.st_size; i += FMAP_SEARCH_STRIDE) { |
| - if (0 == strncmp(s, "__FMAP__", 8)) { |
| - printf("hit at 0x%08x\n", (uint32_t)i); |
| - retval = dump_fmap(s); |
| - break; |
| - } |
| - s += FMAP_SEARCH_STRIDE; |
| + fmap = FindFmap((char *) base_of_rom, sb.st_size); |
| + if (fmap) { |
| + printf("hit at 0x%08x\n", (uint32_t) (fmap - (char *) base_of_rom)); |
| + retval = dump_fmap(fmap); |
| } |
| if (0 != munmap(base_of_rom, sb.st_size)) { |