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;
|
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,
|
struct marker *alloc_marker(unsigned int offset, enum markertype type,
|
||||||
char *ref)
|
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_byte(struct data d, uint8_t byte);
|
||||||
struct data data_append_zeroes(struct data d, int len);
|
struct data data_append_zeroes(struct data d, int len);
|
||||||
struct data data_append_align(struct data d, int align);
|
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,
|
struct marker *alloc_marker(unsigned int offset, enum markertype type,
|
||||||
char *ref);
|
char *ref);
|
||||||
|
|
Loading…
Reference in New Issue