Browse Source

libfdt: Rename and publish _fdt_check_header()

It's potentially useful for users of libfdt to sanity check a device
tree (or, rather, a blob of data which may or may not be a device
tree) before processing it in more detail with libfdt.

This patch renames the libfdt internal function _fdt_check_header() to
fdt_check_header() and makes it a published function, so it can now be
used for this purpose.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
main
David Gibson 18 years ago committed by Jon Loeliger
parent
commit
96b5fad3a1
  1. 4
      libfdt/fdt.c
  2. 6
      libfdt/fdt_ro.c
  3. 2
      libfdt/fdt_rw.c
  4. 29
      libfdt/libfdt.h
  5. 1
      libfdt/libfdt_internal.h

4
libfdt/fdt.c

@ -55,7 +55,7 @@


#include "libfdt_internal.h" #include "libfdt_internal.h"


int _fdt_check_header(const void *fdt) int fdt_check_header(const void *fdt)
{ {
if (fdt_magic(fdt) == FDT_MAGIC) { if (fdt_magic(fdt) == FDT_MAGIC) {
/* Complete tree */ /* Complete tree */
@ -143,7 +143,7 @@ const char *_fdt_find_string(const char *strtab, int tabsize, const char *s)


int fdt_move(const void *fdt, void *buf, int bufsize) int fdt_move(const void *fdt, void *buf, int bufsize)
{ {
int err = _fdt_check_header(fdt); int err = fdt_check_header(fdt);


if (err) if (err)
return err; return err;

6
libfdt/fdt_ro.c

@ -58,7 +58,7 @@
#define CHECK_HEADER(fdt) \ #define CHECK_HEADER(fdt) \
{ \ { \
int err; \ int err; \
if ((err = _fdt_check_header(fdt)) != 0) \ if ((err = fdt_check_header(fdt)) != 0) \
return err; \ return err; \
} }


@ -193,7 +193,7 @@ const char *fdt_get_name(const void *fdt, int nodeoffset, int *len)
const struct fdt_node_header *nh; const struct fdt_node_header *nh;
int err; int err;


if ((err = _fdt_check_header(fdt)) != 0) if ((err = fdt_check_header(fdt)) != 0)
goto fail; goto fail;


err = -FDT_ERR_BADOFFSET; err = -FDT_ERR_BADOFFSET;
@ -222,7 +222,7 @@ const struct fdt_property *fdt_get_property(const void *fdt,
int offset, nextoffset; int offset, nextoffset;
int err; int err;


if ((err = _fdt_check_header(fdt)) != 0) if ((err = fdt_check_header(fdt)) != 0)
goto fail; goto fail;


err = -FDT_ERR_BADOFFSET; err = -FDT_ERR_BADOFFSET;

2
libfdt/fdt_rw.c

@ -59,7 +59,7 @@ static int rw_check_header(void *fdt)
{ {
int err; int err;


if ((err = _fdt_check_header(fdt))) if ((err = fdt_check_header(fdt)))
return err; return err;
if (fdt_version(fdt) < 0x11) if (fdt_version(fdt) < 0x11)
return -FDT_ERR_BADVERSION; return -FDT_ERR_BADVERSION;

29
libfdt/libfdt.h

@ -79,6 +79,22 @@


#define FDT_ERR_MAX 12 #define FDT_ERR_MAX 12


/* Low-level functions (you probably don't need these) */

const void *fdt_offset_ptr(const void *fdt, int offset, int checklen);
static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen)
{
return (void *)fdt_offset_ptr(fdt, offset, checklen);
}


#define fdt_offset_ptr_typed(fdt, offset, var) \
((typeof(var))(fdt_offset_ptr((fdt), (offset), sizeof(*(var)))))
#define fdt_offset_ptr_typed_w(fdt, offset, var) \
((typeof(var))(fdt_offset_ptr_w((fdt), (offset), sizeof(*(var)))))

/* General functions */

#define fdt_get_header(fdt, field) \ #define fdt_get_header(fdt, field) \
(fdt32_to_cpu(((const struct fdt_header *)(fdt))->field)) (fdt32_to_cpu(((const struct fdt_header *)(fdt))->field))
#define fdt_magic(fdt) (fdt_get_header(fdt, magic)) #define fdt_magic(fdt) (fdt_get_header(fdt, magic))
@ -95,18 +111,7 @@
#define fdt_set_header(fdt, field, val) \ #define fdt_set_header(fdt, field, val) \
((struct fdt_header *)(fdt))->field = cpu_to_fdt32(val) ((struct fdt_header *)(fdt))->field = cpu_to_fdt32(val)


const void *fdt_offset_ptr(const void *fdt, int offset, int checklen); int fdt_check_header(const void *fdt);
static inline void *fdt_offset_ptr_w(void *fdt, int offset, int checklen)
{
return (void *)fdt_offset_ptr(fdt, offset, checklen);
}


#define fdt_offset_ptr_typed(fdt, offset, var) \
((typeof(var))(fdt_offset_ptr((fdt), (offset), sizeof(*(var)))))
#define fdt_offset_ptr_typed_w(fdt, offset, var) \
((typeof(var))(fdt_offset_ptr_w((fdt), (offset), sizeof(*(var)))))

int fdt_move(const void *fdt, void *buf, int bufsize); int fdt_move(const void *fdt, void *buf, int bufsize);


/* Read-only functions */ /* Read-only functions */

1
libfdt/libfdt_internal.h

@ -58,7 +58,6 @@
#define memeq(p, q, n) (memcmp((p), (q), (n)) == 0) #define memeq(p, q, n) (memcmp((p), (q), (n)) == 0)
#define streq(p, q) (strcmp((p), (q)) == 0) #define streq(p, q) (strcmp((p), (q)) == 0)


int _fdt_check_header(const void *fdt);
uint32_t _fdt_next_tag(const void *fdt, int startoffset, int *nextoffset); uint32_t _fdt_next_tag(const void *fdt, int startoffset, int *nextoffset);
const char *_fdt_find_string(const char *strtab, int tabsize, const char *s); const char *_fdt_find_string(const char *strtab, int tabsize, const char *s);
int _fdt_node_end_offset(void *fdt, int nodeoffset); int _fdt_node_end_offset(void *fdt, int nodeoffset);

Loading…
Cancel
Save