Home | History | Annotate | Line # | Download | only in common
linux_errno.c revision 1.12.114.1
      1  1.12.114.1       mjf /*	$NetBSD: linux_errno.c,v 1.12.114.1 2008/06/02 13:23:02 mjf Exp $	*/
      2         1.1      fvdl 
      3         1.7      fvdl /*-
      4         1.7      fvdl  * Copyright (c) 1995 The NetBSD Foundation, Inc.
      5         1.1      fvdl  * All rights reserved.
      6         1.1      fvdl  *
      7         1.7      fvdl  * This code is derived from software contributed to The NetBSD Foundation
      8         1.7      fvdl  * by Frank van der Linden.
      9         1.7      fvdl  *
     10         1.1      fvdl  * Redistribution and use in source and binary forms, with or without
     11         1.1      fvdl  * modification, are permitted provided that the following conditions
     12         1.1      fvdl  * are met:
     13         1.1      fvdl  * 1. Redistributions of source code must retain the above copyright
     14         1.1      fvdl  *    notice, this list of conditions and the following disclaimer.
     15         1.1      fvdl  * 2. Redistributions in binary form must reproduce the above copyright
     16         1.1      fvdl  *    notice, this list of conditions and the following disclaimer in the
     17         1.1      fvdl  *    documentation and/or other materials provided with the distribution.
     18         1.1      fvdl  *
     19         1.7      fvdl  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20         1.7      fvdl  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21         1.7      fvdl  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22         1.7      fvdl  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23         1.7      fvdl  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24         1.7      fvdl  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25         1.7      fvdl  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26         1.7      fvdl  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27         1.7      fvdl  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28         1.7      fvdl  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29         1.7      fvdl  * POSSIBILITY OF SUCH DAMAGE.
     30         1.1      fvdl  */
     31        1.12     lukem 
     32        1.12     lukem #include <sys/cdefs.h>
     33        1.12     lukem __KERNEL_RCSID(0, "$NetBSD: linux_errno.c,v 1.12.114.1 2008/06/02 13:23:02 mjf Exp $");
     34         1.1      fvdl 
     35         1.6  christos #include <compat/linux/common/linux_errno.h>
     36         1.1      fvdl 
     37         1.5       erh /*
     38         1.9       erh  * This list is used to translate NetBSD errnos to linux errnos
     39         1.5       erh  * when returning from a system call. (NetBSD system call->linux program)
     40         1.5       erh  */
     41        1.10  jdolecek const int native_to_linux_errno[] = {
     42         1.1      fvdl 	0,
     43        1.11      manu 	LINUX_SCERR_SIGN LINUX_EPERM,
     44        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOENT,
     45        1.11      manu 	LINUX_SCERR_SIGN LINUX_ESRCH,
     46        1.11      manu 	LINUX_SCERR_SIGN LINUX_EINTR,
     47        1.11      manu 	LINUX_SCERR_SIGN LINUX_EIO,
     48        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENXIO,
     49        1.11      manu 	LINUX_SCERR_SIGN LINUX_E2BIG,
     50        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOEXEC,
     51        1.11      manu 	LINUX_SCERR_SIGN LINUX_EBADF,
     52        1.11      manu 	LINUX_SCERR_SIGN LINUX_ECHILD,
     53        1.11      manu 	LINUX_SCERR_SIGN LINUX_EDEADLK,
     54        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOMEM,
     55        1.11      manu 	LINUX_SCERR_SIGN LINUX_EACCES,
     56        1.11      manu 	LINUX_SCERR_SIGN LINUX_EFAULT,
     57        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOTBLK,
     58        1.11      manu 	LINUX_SCERR_SIGN LINUX_EBUSY,
     59        1.11      manu 	LINUX_SCERR_SIGN LINUX_EEXIST,
     60        1.11      manu 	LINUX_SCERR_SIGN LINUX_EXDEV,
     61        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENODEV,
     62        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOTDIR,
     63        1.11      manu 	LINUX_SCERR_SIGN LINUX_EISDIR,
     64        1.11      manu 	LINUX_SCERR_SIGN LINUX_EINVAL,
     65        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENFILE,
     66        1.11      manu 	LINUX_SCERR_SIGN LINUX_EMFILE,
     67        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOTTY,
     68        1.11      manu 	LINUX_SCERR_SIGN LINUX_ETXTBSY,
     69        1.11      manu 	LINUX_SCERR_SIGN LINUX_EFBIG,
     70        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSPC,
     71        1.11      manu 	LINUX_SCERR_SIGN LINUX_ESPIPE,
     72        1.11      manu 	LINUX_SCERR_SIGN LINUX_EROFS,
     73        1.11      manu 	LINUX_SCERR_SIGN LINUX_EMLINK,
     74        1.11      manu 	LINUX_SCERR_SIGN LINUX_EPIPE,
     75        1.11      manu 	LINUX_SCERR_SIGN LINUX_EDOM,
     76        1.11      manu 	LINUX_SCERR_SIGN LINUX_ERANGE,
     77        1.11      manu 	LINUX_SCERR_SIGN LINUX_EAGAIN,
     78        1.11      manu 	LINUX_SCERR_SIGN LINUX_EINPROGRESS,
     79        1.11      manu 	LINUX_SCERR_SIGN LINUX_EALREADY,
     80        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOTSOCK,
     81        1.11      manu 	LINUX_SCERR_SIGN LINUX_EDESTADDRREQ,
     82        1.11      manu 	LINUX_SCERR_SIGN LINUX_EMSGSIZE,
     83        1.11      manu 	LINUX_SCERR_SIGN LINUX_EPROTOTYPE,
     84        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOPROTOOPT,
     85        1.11      manu 	LINUX_SCERR_SIGN LINUX_EPROTONOSUPPORT,
     86        1.11      manu 	LINUX_SCERR_SIGN LINUX_ESOCKTNOSUPPORT,
     87        1.11      manu 	LINUX_SCERR_SIGN LINUX_EOPNOTSUPP,
     88        1.11      manu 	LINUX_SCERR_SIGN LINUX_EPFNOSUPPORT,
     89        1.11      manu 	LINUX_SCERR_SIGN LINUX_EAFNOSUPPORT,
     90        1.11      manu 	LINUX_SCERR_SIGN LINUX_EADDRINUSE,
     91        1.11      manu 	LINUX_SCERR_SIGN LINUX_EADDRNOTAVAIL,
     92        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENETDOWN,
     93        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENETUNREACH,
     94        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENETRESET,
     95        1.11      manu 	LINUX_SCERR_SIGN LINUX_ECONNABORTED,
     96        1.11      manu 	LINUX_SCERR_SIGN LINUX_ECONNRESET,
     97        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOBUFS,
     98        1.11      manu 	LINUX_SCERR_SIGN LINUX_EISCONN,
     99        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOTCONN,
    100        1.11      manu 	LINUX_SCERR_SIGN LINUX_ESHUTDOWN,
    101        1.11      manu 	LINUX_SCERR_SIGN LINUX_ETOOMANYREFS,
    102        1.11      manu 	LINUX_SCERR_SIGN LINUX_ETIMEDOUT,
    103        1.11      manu 	LINUX_SCERR_SIGN LINUX_ECONNREFUSED,
    104        1.11      manu 	LINUX_SCERR_SIGN LINUX_ELOOP,
    105        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENAMETOOLONG,
    106        1.11      manu 	LINUX_SCERR_SIGN LINUX_EHOSTDOWN,
    107        1.11      manu 	LINUX_SCERR_SIGN LINUX_EHOSTUNREACH,
    108        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOTEMPTY,
    109        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSYS,		/* not mapped (EPROCLIM) */
    110        1.11      manu 	LINUX_SCERR_SIGN LINUX_EUSERS,
    111        1.11      manu 	LINUX_SCERR_SIGN LINUX_EDQUOT,
    112        1.11      manu 	LINUX_SCERR_SIGN LINUX_ESTALE,
    113        1.11      manu 	LINUX_SCERR_SIGN LINUX_EREMOTE,
    114        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSYS,		/* not mapped (EBADRPC) */
    115        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSYS,		/* not mapped (ERPCMISMATCH) */
    116        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSYS,		/* not mapped (EPROGUNAVAIL) */
    117        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSYS,		/* not mapped (EPROGMISMATCH) */
    118        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSYS,		/* not mapped (EPROCUNAVAIL) */
    119        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOLCK,
    120        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSYS,
    121        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSYS,		/* not mapped (EFTYPE) */
    122        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSYS,		/* not mapped (EAUTH) */
    123        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSYS,		/* not mapped (ENEEDAUTH) */
    124        1.11      manu 	LINUX_SCERR_SIGN LINUX_EIDRM,
    125        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOMSG,		/* 83 */
    126         1.1      fvdl 
    127         1.1      fvdl 	/*
    128         1.1      fvdl 	 * The rest of the list consists of errors that only
    129         1.1      fvdl 	 * Linux has. They can be used to map them on to
    130         1.1      fvdl 	 * themselves, so Linux emulating syscalls can return
    131         1.1      fvdl 	 * these values.
    132         1.1      fvdl 	 */
    133         1.1      fvdl 
    134        1.11      manu 	LINUX_SCERR_SIGN LINUX_ECHRNG,
    135        1.11      manu 	LINUX_SCERR_SIGN LINUX_EL2NSYNC,
    136        1.11      manu 	LINUX_SCERR_SIGN LINUX_EL3HLT,
    137        1.11      manu 	LINUX_SCERR_SIGN LINUX_EL3RST,
    138        1.11      manu 	LINUX_SCERR_SIGN LINUX_ELNRNG,
    139        1.11      manu 	LINUX_SCERR_SIGN LINUX_EUNATCH,
    140        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOCSI,
    141        1.11      manu 	LINUX_SCERR_SIGN LINUX_EL2HLT,
    142        1.11      manu 	LINUX_SCERR_SIGN LINUX_EBADE,
    143        1.11      manu 	LINUX_SCERR_SIGN LINUX_EBADR,
    144        1.11      manu 	LINUX_SCERR_SIGN LINUX_EXFULL,
    145        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOANO,
    146        1.11      manu 	LINUX_SCERR_SIGN LINUX_EBADRQC,
    147        1.11      manu 	LINUX_SCERR_SIGN LINUX_EBADSLT,
    148        1.11      manu 	LINUX_SCERR_SIGN LINUX_EDEADLOCK,
    149        1.11      manu 	LINUX_SCERR_SIGN LINUX_EBFONT,
    150        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSTR,
    151        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENODATA,
    152        1.11      manu 	LINUX_SCERR_SIGN LINUX_ETIME,
    153        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOSR,
    154        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENONET,
    155        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOPKG,
    156        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOLINK,
    157        1.11      manu 	LINUX_SCERR_SIGN LINUX_EADV,
    158        1.11      manu 	LINUX_SCERR_SIGN LINUX_ESRMNT,
    159        1.11      manu 	LINUX_SCERR_SIGN LINUX_ECOMM,
    160        1.11      manu 	LINUX_SCERR_SIGN LINUX_EPROTO,
    161        1.11      manu 	LINUX_SCERR_SIGN LINUX_EMULTIHOP,
    162        1.11      manu 	LINUX_SCERR_SIGN LINUX_EDOTDOT,
    163        1.11      manu 	LINUX_SCERR_SIGN LINUX_EBADMSG,
    164        1.11      manu 	LINUX_SCERR_SIGN LINUX_EOVERFLOW,
    165        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOTUNIQ,
    166        1.11      manu 	LINUX_SCERR_SIGN LINUX_EBADFD,
    167        1.11      manu 	LINUX_SCERR_SIGN LINUX_EREMCHG,
    168        1.11      manu 	LINUX_SCERR_SIGN LINUX_ELIBACC,
    169        1.11      manu 	LINUX_SCERR_SIGN LINUX_ELIBBAD,
    170        1.11      manu 	LINUX_SCERR_SIGN LINUX_ELIBSCN,
    171        1.11      manu 	LINUX_SCERR_SIGN LINUX_ELIBMAX,
    172        1.11      manu 	LINUX_SCERR_SIGN LINUX_ELIBEXEC,
    173        1.11      manu 	LINUX_SCERR_SIGN LINUX_EILSEQ,
    174        1.11      manu 	LINUX_SCERR_SIGN LINUX_ERESTART,
    175        1.11      manu 	LINUX_SCERR_SIGN LINUX_ESTRPIPE,
    176        1.11      manu 	LINUX_SCERR_SIGN LINUX_EUCLEAN,
    177        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENOTNAM,
    178        1.11      manu 	LINUX_SCERR_SIGN LINUX_ENAVAIL,
    179        1.11      manu 	LINUX_SCERR_SIGN LINUX_EISNAM,
    180        1.11      manu 	LINUX_SCERR_SIGN LINUX_EREMOTEIO,
    181         1.1      fvdl };
    182