Linux Audio

Check our new training course

Loading...
v5.4
 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
14struct fdt_errtabent {
15	const char *str;
16};
17
18#define FDT_ERRTABENT(val) \
19	[(val)] = { .str = #val, }
20
21static 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};
43#define FDT_ERRTABSIZE	(sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))
44
45const char *fdt_strerror(int errval)
46{
47	if (errval > 0)
48		return "<valid offset/length>";
49	else if (errval == 0)
50		return "<no error>";
51	else if (errval > -FDT_ERRTABSIZE) {
52		const char *s = fdt_errtable[-errval].str;
53
54		if (s)
55			return s;
56	}
57
58	return "<unknown error>";
59}
v4.17
 
  1/*
  2 * libfdt - Flat Device Tree manipulation
  3 * Copyright (C) 2006 David Gibson, IBM Corporation.
  4 *
  5 * libfdt is dual licensed: you can use it either under the terms of
  6 * the GPL, or the BSD license, at your option.
  7 *
  8 *  a) This library is free software; you can redistribute it and/or
  9 *     modify it under the terms of the GNU General Public License as
 10 *     published by the Free Software Foundation; either version 2 of the
 11 *     License, or (at your option) any later version.
 12 *
 13 *     This library is distributed in the hope that it will be useful,
 14 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 15 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 16 *     GNU General Public License for more details.
 17 *
 18 *     You should have received a copy of the GNU General Public
 19 *     License along with this library; if not, write to the Free
 20 *     Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
 21 *     MA 02110-1301 USA
 22 *
 23 * Alternatively,
 24 *
 25 *  b) Redistribution and use in source and binary forms, with or
 26 *     without modification, are permitted provided that the following
 27 *     conditions are met:
 28 *
 29 *     1. Redistributions of source code must retain the above
 30 *        copyright notice, this list of conditions and the following
 31 *        disclaimer.
 32 *     2. Redistributions in binary form must reproduce the above
 33 *        copyright notice, this list of conditions and the following
 34 *        disclaimer in the documentation and/or other materials
 35 *        provided with the distribution.
 36 *
 37 *     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
 38 *     CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
 39 *     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 40 *     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 41 *     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 42 *     CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 43 *     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 44 *     NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 45 *     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 46 *     HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 47 *     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 48 *     OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 49 *     EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 50 */
 51#include "libfdt_env.h"
 52
 53#include <fdt.h>
 54#include <libfdt.h>
 55
 56#include "libfdt_internal.h"
 57
 58struct fdt_errtabent {
 59	const char *str;
 60};
 61
 62#define FDT_ERRTABENT(val) \
 63	[(val)] = { .str = #val, }
 64
 65static struct fdt_errtabent fdt_errtable[] = {
 66	FDT_ERRTABENT(FDT_ERR_NOTFOUND),
 67	FDT_ERRTABENT(FDT_ERR_EXISTS),
 68	FDT_ERRTABENT(FDT_ERR_NOSPACE),
 69
 70	FDT_ERRTABENT(FDT_ERR_BADOFFSET),
 71	FDT_ERRTABENT(FDT_ERR_BADPATH),
 72	FDT_ERRTABENT(FDT_ERR_BADPHANDLE),
 73	FDT_ERRTABENT(FDT_ERR_BADSTATE),
 74
 75	FDT_ERRTABENT(FDT_ERR_TRUNCATED),
 76	FDT_ERRTABENT(FDT_ERR_BADMAGIC),
 77	FDT_ERRTABENT(FDT_ERR_BADVERSION),
 78	FDT_ERRTABENT(FDT_ERR_BADSTRUCTURE),
 79	FDT_ERRTABENT(FDT_ERR_BADLAYOUT),
 80	FDT_ERRTABENT(FDT_ERR_INTERNAL),
 81	FDT_ERRTABENT(FDT_ERR_BADNCELLS),
 82	FDT_ERRTABENT(FDT_ERR_BADVALUE),
 83	FDT_ERRTABENT(FDT_ERR_BADOVERLAY),
 84	FDT_ERRTABENT(FDT_ERR_NOPHANDLES),
 
 85};
 86#define FDT_ERRTABSIZE	(sizeof(fdt_errtable) / sizeof(fdt_errtable[0]))
 87
 88const char *fdt_strerror(int errval)
 89{
 90	if (errval > 0)
 91		return "<valid offset/length>";
 92	else if (errval == 0)
 93		return "<no error>";
 94	else if (errval > -FDT_ERRTABSIZE) {
 95		const char *s = fdt_errtable[-errval].str;
 96
 97		if (s)
 98			return s;
 99	}
100
101	return "<unknown error>";
102}