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

Unified Diff: lib/flashrom.c

Issue 6646016: leverage flashrom fast partial read function to speed up VPD read. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/vpd.git@master
Patch Set: refine code to handle corner case of eps->table_address. Created 9 years, 9 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 | « include/lib/vpd.h ('k') | lib/fmap.c » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/flashrom.c
diff --git a/lib/flashrom.c b/lib/flashrom.c
index 0ed4acc00e2e01014ba95e226cf47cae2719ce33..2a3a3f386234b3c667c51dd09ffb61a44d96f956 100644
--- a/lib/flashrom.c
+++ b/lib/flashrom.c
@@ -34,10 +34,6 @@
* So, define a long enough length here. */
#define CMD_BUF_SIZE (4096)
-#define PARTIAL_WRITE_AREA_NAME "pw_name"
-
-static uint8_t layout_filename[] = "/tmp/vpd.layout.XXXXXX";
-
static uint8_t flashrom_cmd[] = "flashrom";
/* The argument for flashrom.
@@ -46,12 +42,14 @@ static uint8_t flashrom_cmd[] = "flashrom";
*/
static uint8_t flashrom_arguments[] = " -p internal:bus=spi ";
-int flashromRead(const char* tmp_file) {
+int flashromRead(const char* part_file, const char* full_file,
+ const char* partition_name) {
char cmd[CMD_BUF_SIZE];
int ret = 0;
- snprintf(cmd, sizeof(cmd), "%s %s -r '%s' >/dev/null 2>&1",
- flashrom_cmd, flashrom_arguments, tmp_file);
+ snprintf(cmd, sizeof(cmd), "%s %s -i '%s':'%s' -r '%s' >/dev/null 2>&1",
+ flashrom_cmd, flashrom_arguments,
+ partition_name, part_file, full_file);
ret = system(cmd);
if (ret == 0)
return FLASHROM_OK;
@@ -59,36 +57,17 @@ int flashromRead(const char* tmp_file) {
return FLASHROM_FAIL;
}
-int flashromPartialWrite(const char* tmp_file,
- const off_t section_offset,
- const size_t section_size) {
+int flashromPartialWrite(const char* part_file, const char* full_file,
+ const char* partition_name) {
int fd;
char cmd[CMD_BUF_SIZE];
FILE* fp;
int ret = 0;
- fd = mkstemp(layout_filename);
- if (fd < 0) {
- fprintf(stderr, "mkstemp(%s) failed.\n", layout_filename);
- return FLASHROM_FAIL;
- } else {
- close(fd);
- }
-
- /* generate layout file */
- if (!(fp = fopen(layout_filename, "w"))) {
- fprintf(stderr, "cannot create layout file: [%s]\n", layout_filename);
- return FLASHROM_FAIL;
- }
- fprintf(fp, "0x%lx:0x%lx %s\n", section_offset,
- section_offset + section_size - 1,
- PARTIAL_WRITE_AREA_NAME);
- fclose(fp);
-
/* write it back */
- snprintf(cmd, sizeof(cmd), "%s %s -l %s -i '%s' -w '%s' >/tmp/null 2>&1",
- flashrom_cmd, flashrom_arguments, layout_filename,
- PARTIAL_WRITE_AREA_NAME, tmp_file);
+ snprintf(cmd, sizeof(cmd), "%s %s -i '%s':'%s' -w '%s' >/tmp/null 2>&1",
+ flashrom_cmd, flashrom_arguments,
+ partition_name, part_file, full_file);
ret = system(cmd);
if (ret == 0)
« no previous file with comments | « include/lib/vpd.h ('k') | lib/fmap.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698