[PATCH] add spu sys/errno.h
Jeff Johnston
jjohnstn@redhat.com
Wed Apr 25 23:27:00 GMT 2007
Patch applied.
-- Jeff J.
Patrick Mansfield wrote:
> Hi Jeff -
>
> Can you please apply? Thanks ...
>
> Add a spu sys/errno.h so spu values match those on ppc linux for assisted
> calls.
>
> ChangeLog:
>
> 2007-04-25 Patrick Mansfield <patmans@us.ibm.com>
>
> * libc/machine/spu/sys/errno.h: New file, so spu errno values match
> ppu linux values. This file is a copy of the cris/sys/errno.h plus
> a few changes (see spu errno.h comments).
>
> Index: my-base-quilt/newlib/libc/machine/spu/sys/errno.h
> ===================================================================
> --- /dev/null
> +++ my-base-quilt/newlib/libc/machine/spu/sys/errno.h
> @@ -0,0 +1,185 @@
> +/*
> + * The SPU must have these values match those on the PPU linux side, so
> + * the assisted calls (system or library ones) that set errno will use the
> + * same values.
> + *
> + * This file is based on the CRIS file, with these modifications:
> + *
> + * EDEADLOCK - instead of EDEADLK (35) use 58 (for some reason ppc only does
> + * this, it is not used by ppc kernel code nor glibc code).
> + *
> + * ECANCELED value of 125 added, in linux and posix value of 125, in generic
> + * newlib errno.h, value of 140
> + *
> + * ENOTSUP as EOPNOTSUPP (95) added, in linux and posix value 95, in
> + * generic newlib errno.h, value of 134
> + */
> +
> +/* This file is to be kept in sync with newlib/libc/include/sys/errno.h
> + on which it is based, except values used or returned by syscalls must
> + be those of the Linux ppc. */
> +
> +/* errno is not a global variable, because that would make using it
> + non-reentrant. Instead, its address is returned by the function
> + __errno. */
> +
> +#ifndef _SYS_ERRNO_H_
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +#define _SYS_ERRNO_H_
> +
> +#include <sys/reent.h>
> +
> +#ifndef _REENT_ONLY
> +#define errno (*__errno())
> +extern int *__errno _PARAMS ((void));
> +#endif
> +
> +/* Please don't use these variables directly.
> + Use strerror instead. */
> +extern _CONST char * _CONST _sys_errlist[];
> +extern int _sys_nerr;
> +
> +#define __errno_r(ptr) ((ptr)->_errno)
> +
> +/* Adjusted to the linux asm/errno.h */
> +#define EPERM 1 /* Operation not permitted */
> +#define ENOENT 2 /* No such file or directory */
> +#define ESRCH 3 /* No such process */
> +#define EINTR 4 /* Interrupted system call */
> +#define EIO 5 /* I/O error */
> +#define ENXIO 6 /* No such device or address */
> +#define E2BIG 7 /* Arg list too long */
> +#define ENOEXEC 8 /* Exec format error */
> +#define EBADF 9 /* Bad file number */
> +#define ECHILD 10 /* No child processes */
> +#define EAGAIN 11 /* Try again */
> +#define ENOMEM 12 /* Out of memory */
> +#define EACCES 13 /* Permission denied */
> +#define EFAULT 14 /* Bad address */
> +#define ENOTBLK 15 /* Block device required */
> +#define EBUSY 16 /* Device or resource busy */
> +#define EEXIST 17 /* File exists */
> +#define EXDEV 18 /* Cross-device link */
> +#define ENODEV 19 /* No such device */
> +#define ENOTDIR 20 /* Not a directory */
> +#define EISDIR 21 /* Is a directory */
> +#define EINVAL 22 /* Invalid argument */
> +#define ENFILE 23 /* File table overflow */
> +#define EMFILE 24 /* Too many open files */
> +#define ENOTTY 25 /* Not a typewriter */
> +#define ETXTBSY 26 /* Text file busy */
> +#define EFBIG 27 /* File too large */
> +#define ENOSPC 28 /* No space left on device */
> +#define ESPIPE 29 /* Illegal seek */
> +#define EROFS 30 /* Read-only file system */
> +#define EMLINK 31 /* Too many links */
> +#define EPIPE 32 /* Broken pipe */
> +#define EDOM 33 /* Math argument out of domain of func */
> +#define ERANGE 34 /* Math result not representable */
> +#define EDEADLK 35 /* Resource deadlock would occur */
> +#define ENAMETOOLONG 36 /* File name too long */
> +#define ENOLCK 37 /* No record locks available */
> +#define ENOSYS 38 /* Function not implemented */
> +#define ENOTEMPTY 39 /* Directory not empty */
> +#define ELOOP 40 /* Too many symbolic links encountered */
> +#define EWOULDBLOCK EAGAIN /* Operation would block */
> +#define ENOMSG 42 /* No message of desired type */
> +#define EIDRM 43 /* Identifier removed */
> +#define ECHRNG 44 /* Channel number out of range */
> +#define EL2NSYNC 45 /* Level 2 not synchronized */
> +#define EL3HLT 46 /* Level 3 halted */
> +#define EL3RST 47 /* Level 3 reset */
> +#define ELNRNG 48 /* Link number out of range */
> +#define EUNATCH 49 /* Protocol driver not attached */
> +#define ENOCSI 50 /* No CSI structure available */
> +#define EL2HLT 51 /* Level 2 halted */
> +#define EBADE 52 /* Invalid exchange */
> +#define EBADR 53 /* Invalid request descriptor */
> +#define EXFULL 54 /* Exchange full */
> +#define ENOANO 55 /* No anode */
> +#define EBADRQC 56 /* Invalid request code */
> +#define EBADSLT 57 /* Invalid slot */
> +
> +#define EDEADLOCK 58
> +
> +#define EBFONT 59 /* Bad font file format */
> +/* This is only used internally in newlib; not returned by the kernel.
> + EBFONT seems the closest match for a "bad file format" error. */
> +#define EFTYPE EBFONT /* Inappropriate file type or format */
> +#define ENOSTR 60 /* Device not a stream */
> +#define ENODATA 61 /* No data available */
> +#define ETIME 62 /* Timer expired */
> +#define ENOSR 63 /* Out of streams resources */
> +#define ENONET 64 /* Machine is not on the network */
> +#define ENOPKG 65 /* Package not installed */
> +#define EREMOTE 66 /* Object is remote */
> +#define ENOLINK 67 /* Link has been severed */
> +#define EADV 68 /* Advertise error */
> +#define ESRMNT 69 /* Srmount error */
> +#define ECOMM 70 /* Communication error on send */
> +#define EPROTO 71 /* Protocol error */
> +#define EMULTIHOP 72 /* Multihop attempted */
> +#define EDOTDOT 73 /* RFS specific error */
> +#define EBADMSG 74 /* Not a data message */
> +#define EOVERFLOW 75 /* Value too large for defined data type */
> +#define ENOTUNIQ 76 /* Name not unique on network */
> +#define EBADFD 77 /* File descriptor in bad state */
> +#define EREMCHG 78 /* Remote address changed */
> +#define ELIBACC 79 /* Can not access a needed shared library */
> +#define ELIBBAD 80 /* Accessing a corrupted shared library */
> +#define ELIBSCN 81 /* .lib section in a.out corrupted */
> +#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
> +#define ELIBEXEC 83 /* Cannot exec a shared library directly */
> +#define EILSEQ 84 /* Illegal byte sequence */
> +#define ERESTART 85 /* Interrupted system call should be restarted */
> +#define ESTRPIPE 86 /* Streams pipe error */
> +#define EUSERS 87 /* Too many users */
> +#define ENOTSOCK 88 /* Socket operation on non-socket */
> +#define EDESTADDRREQ 89 /* Destination address required */
> +#define EMSGSIZE 90 /* Message too long */
> +#define EPROTOTYPE 91 /* Protocol wrong type for socket */
> +#define ENOPROTOOPT 92 /* Protocol not available */
> +#define EPROTONOSUPPORT 93 /* Protocol not supported */
> +#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
> +#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
> +#define ENOTSUP EOPNOTSUPP
> +#define EPFNOSUPPORT 96 /* Protocol family not supported */
> +#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
> +#define EADDRINUSE 98 /* Address already in use */
> +#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
> +#define ENETDOWN 100 /* Network is down */
> +#define ENETUNREACH 101 /* Network is unreachable */
> +#define ENETRESET 102 /* Network dropped connection because of reset */
> +#define ECONNABORTED 103 /* Software caused connection abort */
> +#define ECONNRESET 104 /* Connection reset by peer */
> +#define ENOBUFS 105 /* No buffer space available */
> +#define EISCONN 106 /* Transport endpoint is already connected */
> +#define ENOTCONN 107 /* Transport endpoint is not connected */
> +#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
> +#define ETOOMANYREFS 109 /* Too many references: cannot splice */
> +#define ETIMEDOUT 110 /* Connection timed out */
> +#define ECONNREFUSED 111 /* Connection refused */
> +#define EHOSTDOWN 112 /* Host is down */
> +#define EHOSTUNREACH 113 /* No route to host */
> +#define EALREADY 114 /* Operation already in progress */
> +#define EINPROGRESS 115 /* Operation now in progress */
> +#define ESTALE 116 /* Stale NFS file handle */
> +#define EUCLEAN 117 /* Structure needs cleaning */
> +#define ENOTNAM 118 /* Not a XENIX named type file */
> +#define ENAVAIL 119 /* No XENIX semaphores available */
> +#define EISNAM 120 /* Is a named type file */
> +#define EREMOTEIO 121 /* Remote I/O error */
> +#define EDQUOT 122 /* Quota exceeded */
> +
> +#define ENOMEDIUM 123 /* No medium found */
> +#define EMEDIUMTYPE 124 /* Wrong medium type */
> +#define ECANCELED 125 /* Operation Canceled */
> +
> +#define __ELASTERROR 2000 /* Users can add values starting here */
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +#endif /* _SYS_ERRNO_H */
More information about the Newlib
mailing list