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