1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
/*
* Copyright (c) 1997-1998 University of Utah and the Flux Group.
* All rights reserved.
*
* This file is part of the Flux OSKit. The OSKit is free software, also known
* as "open source;" you can redistribute it and/or modify it under the terms
* of the GNU General Public License (GPL), version 2, as published by the Free
* Software Foundation (FSF). To explore alternate licensing terms, contact
* the University of Utah at csl-dist@cs.utah.edu or +1-801-585-3271.
*
* The OSKit is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GPL for more details. You should have
* received a copy of the GPL along with the OSKit; see the file COPYING. If
* not, write to the FSF, 59 Temple Place #330, Boston, MA 02111-1307, USA.
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/errno.h>
#include <oskit/error.h>
#include <oskit/dev/freebsd.h>
/*
* Map FreeBSD errno values to OSKit error codes.
*/
static oskit_error_t errtab[ELAST] =
{
OSKIT_EPERM,
OSKIT_ENOENT,
OSKIT_ESRCH,
OSKIT_EINTR,
OSKIT_EIO,
OSKIT_ENXIO,
OSKIT_E2BIG,
OSKIT_ENOEXEC,
OSKIT_EBADF,
OSKIT_ECHILD,
OSKIT_EDEADLK,
OSKIT_ENOMEM,
OSKIT_EACCES,
OSKIT_EFAULT,
OSKIT_EINVAL, /* ENOTBLK */
OSKIT_EBUSY,
OSKIT_EEXIST,
OSKIT_EXDEV,
OSKIT_ENODEV,
OSKIT_ENOTDIR,
OSKIT_EISDIR,
OSKIT_EINVAL,
OSKIT_ENFILE,
OSKIT_EMFILE,
OSKIT_ENOTTY,
OSKIT_ETXTBSY,
OSKIT_EFBIG,
OSKIT_ENOSPC,
OSKIT_ESPIPE,
OSKIT_EROFS,
OSKIT_EMLINK,
OSKIT_EPIPE,
OSKIT_EDOM,
OSKIT_ERANGE,
OSKIT_EAGAIN,
OSKIT_EINPROGRESS,
OSKIT_EALREADY,
OSKIT_ENOTSOCK,
OSKIT_EDESTADDRREQ,
OSKIT_EMSGSIZE,
OSKIT_EPROTOTYPE,
OSKIT_ENOPROTOOPT,
OSKIT_EPROTONOSUPPORT,
OSKIT_E_UNEXPECTED, /* ESOCKTNOSUPPORT */
OSKIT_EOPNOTSUPP,
OSKIT_E_UNEXPECTED, /* EPFNOSUPPORT */
OSKIT_EAFNOSUPPORT,
OSKIT_EADDRINUSE,
OSKIT_EADDRNOTAVAIL,
OSKIT_ENETDOWN,
OSKIT_ENETUNREACH,
OSKIT_E_UNEXPECTED, /* ENETRESET */
OSKIT_ECONNABORTED,
OSKIT_ECONNRESET,
OSKIT_ENOBUFS,
OSKIT_EISCONN,
OSKIT_ENOTCONN,
OSKIT_E_UNEXPECTED, /* ESHUTDOWN */
OSKIT_E_UNEXPECTED, /* ETOOMANYREFS */
OSKIT_ETIMEDOUT,
OSKIT_ECONNREFUSED,
OSKIT_ELOOP,
OSKIT_ENAMETOOLONG,
OSKIT_E_UNEXPECTED, /* EHOSTDOWN */
OSKIT_EHOSTUNREACH,
OSKIT_ENOTEMPTY,
OSKIT_E_UNEXPECTED, /* EPROCLIM */
OSKIT_E_UNEXPECTED, /* EUSERS */
OSKIT_EDQUOT,
OSKIT_ESTALE,
OSKIT_E_UNEXPECTED, /* EREMOTE */
OSKIT_E_UNEXPECTED, /* EBADRPC */
OSKIT_E_UNEXPECTED, /* ERPCMISMATCH */
OSKIT_E_UNEXPECTED, /* EPROGUNAVAIL */
OSKIT_E_UNEXPECTED, /* EPROGMISMATCH */
OSKIT_E_UNEXPECTED, /* EPROCUNAVAIL */
OSKIT_ENOLCK,
OSKIT_ENOSYS,
OSKIT_E_UNEXPECTED, /* EFTYPE */
OSKIT_E_UNEXPECTED, /* EAUTH */
OSKIT_E_UNEXPECTED /* ENEEDAUTH */
};
oskit_error_t oskit_freebsd_xlate_errno(int freebsd_error)
{
if (sizeof(errtab)/sizeof(errtab[0]) != ELAST)
panic("fdev_freebsd: errtab out ouf sync");
if (freebsd_error <= 0 || freebsd_error > ELAST)
return OSKIT_E_UNEXPECTED;
return errtab[freebsd_error-1];
}
|