// SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) /* *libfdt-FlatDeviceTreemanipulation *Copyright(C)2006DavidGibson,IBMCorporation.
*/ #include"libfdt_env.h"
#include <fdt.h> #include <libfdt.h>
#include"libfdt_internal.h"
staticint fdt_sw_probe_(void *fdt)
{ if (!can_assume(VALID_INPUT)) { if (fdt_magic(fdt) == FDT_MAGIC) return -FDT_ERR_BADSTATE; elseif (fdt_magic(fdt) != FDT_SW_MAGIC) return -FDT_ERR_BADMAGIC;
}
return0;
}
#define FDT_SW_PROBE(fdt) \
{ \ int err; \ if ((err = fdt_sw_probe_(fdt)) != 0) \ return err; \
}
/* 'memrsv' state: Initial state after fdt_create() * *Allowedfunctions: *fdt_add_reservemap_entry() *fdt_finish_reservemap()[movesto'struct'state]
*/ staticint fdt_sw_probe_memrsv_(void *fdt)
{ int err = fdt_sw_probe_(fdt); if (err) return err;
if (!can_assume(VALID_INPUT) && fdt_off_dt_strings(fdt) != 0) return -FDT_ERR_BADSTATE; return0;
}
#define FDT_SW_PROBE_MEMRSV(fdt) \
{ \ int err; \ if ((err = fdt_sw_probe_memrsv_(fdt)) != 0) \ return err; \
}
/* 'struct' state: Enter this state after fdt_finish_reservemap() * *Allowedfunctions: *fdt_begin_node() *fdt_end_node() *fdt_property*() *fdt_finish()[movesto'complete'state]
*/ staticint fdt_sw_probe_struct_(void *fdt)
{ int err = fdt_sw_probe_(fdt); if (err) return err;
if (!can_assume(VALID_INPUT) &&
fdt_off_dt_strings(fdt) != fdt_totalsize(fdt)) return -FDT_ERR_BADSTATE; return0;
}
#define FDT_SW_PROBE_STRUCT(fdt) \
{ \ int err; \ if ((err = fdt_sw_probe_struct_(fdt)) != 0) \ return err; \
}
/* Two cases to avoid clobbering data if the old and new
* buffers partially overlap */ if (buf <= fdt) {
memmove(buf, fdt, headsize);
memmove(newtail, oldtail, tailsize);
} else {
memmove(newtail, oldtail, tailsize);
memmove(buf, fdt, headsize);
}
fdt_set_totalsize(buf, bufsize); if (fdt_off_dt_strings(buf))
fdt_set_off_dt_strings(buf, bufsize);
return0;
}
int fdt_add_reservemap_entry(void *fdt, uint64_t addr, uint64_t size)
{ struct fdt_reserve_entry *re; int offset;
/* Must only be used to roll back in case of error */ staticvoid fdt_del_last_string_(void *fdt, constchar *s)
{ int strtabsize = fdt_size_dt_strings(fdt); int len = strlen(s) + 1;
/* Finally, adjust the header */
fdt_set_totalsize(fdt, newstroffset + fdt_size_dt_strings(fdt));
/* And fix up fields that were keeping intermediate state. */
fdt_set_last_comp_version(fdt, FDT_LAST_COMPATIBLE_VERSION);
fdt_set_magic(fdt, FDT_MAGIC);
return0;
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-10-12)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.