| // SPDX-License-Identifier: (GPL-2.0-or-later OR BSD-2-Clause) |
| /* |
| * libfdt - Flat Device Tree manipulation |
| * Copyright (C) 2006 David Gibson, IBM Corporation. |
| * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| #include "libfdt_env.h" |
| |
| #include <fdt.h> |
| #include <libfdt.h> |
| |
| #include "libfdt_internal.h" |
| |
| struct fdt_errtabent { |
| const char *str; |
| }; |
| |
| #define FDT_ERRTABENT(val) \ |
| [(val)] = { .str = #val, } |
| |
| static struct fdt_errtabent fdt_errtable[] = { |
| FDT_ERRTABENT(FDT_ERR_NOTFOUND), |
| FDT_ERRTABENT(FDT_ERR_EXISTS), |
| FDT_ERRTABENT(FDT_ERR_NOSPACE), |
| |
| FDT_ERRTABENT(FDT_ERR_BADOFFSET), |
| FDT_ERRTABENT(FDT_ERR_BADPATH), |
| FDT_ERRTABENT(FDT_ERR_BADPHANDLE), |
| FDT_ERRTABENT(FDT_ERR_BADSTATE), |
| |
| FDT_ERRTABENT(FDT_ERR_TRUNCATED), |
| FDT_ERRTABENT(FDT_ERR_BADMAGIC), |
| FDT_ERRTABENT(FDT_ERR_BADVERSION), |
| FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE), |
| FDT_ERRTABENT(FDT_ERR_BADLAYOUT), |
| FDT_ERRTABENT(FDT_ERR_INTERNAL), |
| FDT_ERRTABENT(FDT_ERR_BADNCELLS), |
| FDT_ERRTABENT(FDT_ERR_BADVALUE), |
| FDT_ERRTABENT(FDT_ERR_BADOVERLAY), |
| FDT_ERRTABENT(FDT_ERR_NOPHANDLES), |
| FDT_ERRTABENT(FDT_ERR_BADFLAGS), |
| FDT_ERRTABENT(FDT_ERR_ALIGNMENT), |
| }; |
| #define FDT_ERRTABSIZE ((int)(sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))) |
| |
| const char *fdt_strerror(int errval) |
| { |
| if (errval > 0) |
| return "<valid offset/length>"; |
| else if (errval == 0) |
| return "<no error>"; |
| else if (-errval < FDT_ERRTABSIZE) { |
| const char *s = fdt_errtable[-errval].str; |
| |
| if (s) |
| return s; |
| } |
| |
| return "<unknown error>"; |
| } |