Branch data Line data Source code
1 : : // SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) 2 : : /* 3 : : * libfdt - Flat Device Tree manipulation 4 : : * Copyright (C) 2006 David Gibson, IBM Corporation. 5 : : * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 6 : : */ 7 : : #include "libfdt_env.h" 8 : : 9 : : #include <fdt.h> 10 : : #include <libfdt.h> 11 : : 12 : : #include "libfdt_internal.h" 13 : : 14 : : struct fdt_errtabent { 15 : : const char *str; 16 : : }; 17 : : 18 : : #define FDT_ERRTABENT(val) \ 19 : : [(val)] = { .str = #val, } 20 : : 21 : : static struct fdt_errtabent fdt_errtable[] = { 22 : : FDT_ERRTABENT(FDT_ERR_NOTFOUND), 23 : : FDT_ERRTABENT(FDT_ERR_EXISTS), 24 : : FDT_ERRTABENT(FDT_ERR_NOSPACE), 25 : : 26 : : FDT_ERRTABENT(FDT_ERR_BADOFFSET), 27 : : FDT_ERRTABENT(FDT_ERR_BADPATH), 28 : : FDT_ERRTABENT(FDT_ERR_BADPHANDLE), 29 : : FDT_ERRTABENT(FDT_ERR_BADSTATE), 30 : : 31 : : FDT_ERRTABENT(FDT_ERR_TRUNCATED), 32 : : FDT_ERRTABENT(FDT_ERR_BADMAGIC), 33 : : FDT_ERRTABENT(FDT_ERR_BADVERSION), 34 : : FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE), 35 : : FDT_ERRTABENT(FDT_ERR_BADLAYOUT), 36 : : FDT_ERRTABENT(FDT_ERR_INTERNAL), 37 : : FDT_ERRTABENT(FDT_ERR_BADNCELLS), 38 : : FDT_ERRTABENT(FDT_ERR_BADVALUE), 39 : : FDT_ERRTABENT(FDT_ERR_BADOVERLAY), 40 : : FDT_ERRTABENT(FDT_ERR_NOPHANDLES), 41 : : FDT_ERRTABENT(FDT_ERR_BADFLAGS), 42 : : FDT_ERRTABENT(FDT_ERR_ALIGNMENT), 43 : : }; 44 : : #define FDT_ERRTABSIZE ((int)(sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))) 45 : : 46 : 0 : const char *fdt_strerror(int errval) 47 : : { 48 : 0 : if (errval > 0) 49 : 0 : return "<valid offset/length>"; 50 : 0 : else if (errval == 0) 51 : 0 : return "<no error>"; 52 : 0 : else if (-errval < FDT_ERRTABSIZE) { 53 : 0 : const char *s = fdt_errtable[-errval].str; 54 : : 55 : 0 : if (s) 56 : 0 : return s; 57 : : } 58 : : 59 : 0 : return "<unknown error>"; 60 : : }