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:
parent
b3850964f6
commit
104b0d9f1e
33
layout.c
33
layout.c
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user