xref: /openbmc/u-boot/fs/yaffs2/yaffs_error.c (revision 753ac610880e6e563d0384bb114f8b41df89e520)
1*753ac610SCharles Manning /*
2*753ac610SCharles Manning  * YAFFS: Yet another FFS. A NAND-flash specific file system.
3*753ac610SCharles Manning  *
4*753ac610SCharles Manning  * Copyright (C) 2002-2011 Aleph One Ltd.
5*753ac610SCharles Manning  *   for Toby Churchill Ltd and Brightstar Engineering
6*753ac610SCharles Manning  *
7*753ac610SCharles Manning  * Created by Timothy Manning <timothy@yaffs.net>
8*753ac610SCharles Manning  *
9*753ac610SCharles Manning  * This program is free software; you can redistribute it and/or modify
10*753ac610SCharles Manning  * it under the terms of the GNU General Public License version 2 as
11*753ac610SCharles Manning  * published by the Free Software Foundation.
12*753ac610SCharles Manning  */
13*753ac610SCharles Manning 
14*753ac610SCharles Manning #include "yaffsfs.h"
15*753ac610SCharles Manning 
16*753ac610SCharles Manning struct error_entry {
17*753ac610SCharles Manning 	int code;
18*753ac610SCharles Manning 	const char *text;
19*753ac610SCharles Manning };
20*753ac610SCharles Manning 
21*753ac610SCharles Manning static const struct error_entry error_list[] = {
22*753ac610SCharles Manning 	{ ENOMEM , "ENOMEM" },
23*753ac610SCharles Manning 	{ EBUSY , "EBUSY"},
24*753ac610SCharles Manning 	{ ENODEV , "ENODEV"},
25*753ac610SCharles Manning 	{ EINVAL , "EINVAL"},
26*753ac610SCharles Manning 	{ EBADF , "EBADF"},
27*753ac610SCharles Manning 	{ EACCES , "EACCES"},
28*753ac610SCharles Manning 	{ EXDEV , "EXDEV" },
29*753ac610SCharles Manning 	{ ENOENT , "ENOENT"},
30*753ac610SCharles Manning 	{ ENOSPC , "ENOSPC"},
31*753ac610SCharles Manning 	{ ERANGE , "ERANGE"},
32*753ac610SCharles Manning 	{ ENODATA, "ENODATA"},
33*753ac610SCharles Manning 	{ ENOTEMPTY, "ENOTEMPTY"},
34*753ac610SCharles Manning 	{ ENAMETOOLONG, "ENAMETOOLONG"},
35*753ac610SCharles Manning 	{ ENOMEM , "ENOMEM"},
36*753ac610SCharles Manning 	{ EEXIST , "EEXIST"},
37*753ac610SCharles Manning 	{ ENOTDIR , "ENOTDIR"},
38*753ac610SCharles Manning 	{ EISDIR , "EISDIR"},
39*753ac610SCharles Manning 	{ ENFILE, "ENFILE"},
40*753ac610SCharles Manning 	{ EROFS, "EROFS"},
41*753ac610SCharles Manning 	{ EFAULT, "EFAULT"},
42*753ac610SCharles Manning 	{ 0, NULL }
43*753ac610SCharles Manning };
44*753ac610SCharles Manning 
yaffs_error_to_str(int err)45*753ac610SCharles Manning const char *yaffs_error_to_str(int err)
46*753ac610SCharles Manning {
47*753ac610SCharles Manning 	const struct error_entry *e = error_list;
48*753ac610SCharles Manning 
49*753ac610SCharles Manning 	if (err < 0)
50*753ac610SCharles Manning 		err = -err;
51*753ac610SCharles Manning 
52*753ac610SCharles Manning 	while (e->code && e->text) {
53*753ac610SCharles Manning 		if (err == e->code)
54*753ac610SCharles Manning 			return e->text;
55*753ac610SCharles Manning 		e++;
56*753ac610SCharles Manning 	}
57*753ac610SCharles Manning 	return "Unknown error code";
58*753ac610SCharles Manning }
59