Home | History | Annotate | Line # | Download | only in dist
      1  1.1.1.2     skrll /*	$NetBSD: fdt_strerror.c,v 1.1.1.3 2019/12/22 12:30:36 skrll Exp $	*/
      2  1.1.1.2     skrll 
      3  1.1.1.3     skrll // 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.3     skrll 	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