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