1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-27 07:02:34 +02:00

layout: change return type and name of find_next_included_romentry

- rename from find_next_included_romentry to get_next_included_romentry
 - return a pointer to a rom_entry instead of just its index.
   this relieves the (single existing) caller from directly accessing the
   data structure holding the entries hence improving segregation and
   readability.

Corresponding to flashrom svn r1481.

Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
This commit is contained in:
Stefan Tauner 2011-12-25 09:07:59 +00:00
parent b3850964f6
commit 104b0d9f1e

View File

@ -215,26 +215,28 @@ int find_romentry(char *name)
return -1; return -1;
} }
int find_next_included_romentry(unsigned int start) romlayout_t *get_next_included_romentry(unsigned int start)
{ {
int i; int i;
unsigned int best_start = UINT_MAX; unsigned int best_start = UINT_MAX;
int best_entry = -1; romlayout_t *best_entry = NULL;
romlayout_t *cur;
/* First come, first serve for overlapping regions. */ /* First come, first serve for overlapping regions. */
for (i = 0; i < romimages; i++) { for (i = 0; i < romimages; i++) {
if (!rom_entries[i].included) cur = &rom_entries[i];
if (!cur->included)
continue; continue;
/* Already past the current entry? */ /* Already past the current entry? */
if (start > rom_entries[i].end) if (start > cur->end)
continue; continue;
/* Inside the current entry? */ /* Inside the current entry? */
if (start >= rom_entries[i].start) if (start >= cur->start)
return i; return cur;
/* Entry begins after start. */ /* Entry begins after start. */
if (best_start > rom_entries[i].start) { if (best_start > cur->start) {
best_start = rom_entries[i].start; best_start = cur->start;
best_entry = i; best_entry = cur;
} }
} }
return best_entry; return best_entry;
@ -243,7 +245,7 @@ int find_next_included_romentry(unsigned int start)
int handle_romentries(struct flashctx *flash, uint8_t *oldcontents, uint8_t *newcontents) int handle_romentries(struct flashctx *flash, uint8_t *oldcontents, uint8_t *newcontents)
{ {
unsigned int start = 0; unsigned int start = 0;
int entry; romlayout_t *entry;
unsigned int size = flash->total_size * 1024; unsigned int size = flash->total_size * 1024;
/* If no layout file was specified or the layout file was empty, assume /* If no layout file was specified or the layout file was empty, assume
@ -255,22 +257,21 @@ int handle_romentries(struct flashctx *flash, uint8_t *oldcontents, uint8_t *new
* The union of all included romentries is used from the new image. * The union of all included romentries is used from the new image.
*/ */
while (start < size) { while (start < size) {
entry = find_next_included_romentry(start); entry = get_next_included_romentry(start);
/* No more romentries for remaining region? */ /* No more romentries for remaining region? */
if (entry < 0) { if (!entry) {
memcpy(newcontents + start, oldcontents + start, memcpy(newcontents + start, oldcontents + start,
size - start); size - start);
break; break;
} }
if (rom_entries[entry].start > start) if (entry->start > start)
memcpy(newcontents + start, oldcontents + start, memcpy(newcontents + start, oldcontents + start,
rom_entries[entry].start - start); entry->start - start);
/* Skip to location after current romentry. */ /* Skip to location after current romentry. */
start = rom_entries[entry].end + 1; start = entry->end + 1;
/* Catch overflow. */ /* Catch overflow. */
if (!start) if (!start)
break; break;
} }
return 0; return 0;
} }