dtc: Add data_insert_data function
Add helper function to insert a data struct into another. Signed-off-by: Ayush Singh <ayush@beagleboard.org> Message-ID: <20250605-previous-value-v3-2-0983d0733a07@beagleboard.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>main
parent
97011d1f4e
commit
84d9dd2fcb
27
data.c
27
data.c
|
@ -251,6 +251,33 @@ bool data_is_one_string(struct data d)
|
|||
return true;
|
||||
}
|
||||
|
||||
struct data data_insert_data(struct data d, struct marker *m, struct data old)
|
||||
{
|
||||
unsigned int offset = m->offset;
|
||||
struct marker *next = m->next;
|
||||
struct marker *marker;
|
||||
struct data new_data;
|
||||
char *ref;
|
||||
|
||||
new_data = data_insert_at_marker(d, m, old.val, old.len);
|
||||
|
||||
/* Copy all markers from old value */
|
||||
marker = old.markers;
|
||||
for_each_marker(marker) {
|
||||
ref = NULL;
|
||||
|
||||
if (marker->ref)
|
||||
ref = xstrdup(marker->ref);
|
||||
|
||||
m->next = alloc_marker(marker->offset + offset, marker->type,
|
||||
ref);
|
||||
m = m->next;
|
||||
}
|
||||
m->next = next;
|
||||
|
||||
return new_data;
|
||||
}
|
||||
|
||||
struct marker *alloc_marker(unsigned int offset, enum markertype type,
|
||||
char *ref)
|
||||
{
|
||||
|
|
1
dtc.h
1
dtc.h
|
@ -182,6 +182,7 @@ struct data data_append_addr(struct data d, uint64_t addr);
|
|||
struct data data_append_byte(struct data d, uint8_t byte);
|
||||
struct data data_append_zeroes(struct data d, int len);
|
||||
struct data data_append_align(struct data d, int align);
|
||||
struct data data_insert_data(struct data d, struct marker *m, struct data old);
|
||||
|
||||
struct marker *alloc_marker(unsigned int offset, enum markertype type,
|
||||
char *ref);
|
||||
|
|
Loading…
Reference in New Issue