summaryrefslogtreecommitdiff
path: root/ports/sysdeps/unix/sysv/aix/bits
diff options
context:
space:
mode:
Diffstat (limited to 'ports/sysdeps/unix/sysv/aix/bits')
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/dirent.h55
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/dlfcn.h47
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/endian.h23
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/errno.h153
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/fcntl.h137
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/ioctl-types.h91
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/ioctls.h248
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/poll.h43
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/resource.h191
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/setjmp.h46
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/sigaction.h72
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/sigcontext.h32
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/signum.h96
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/sigset.h125
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/sigstack.h46
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/socket.h293
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/stat.h119
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/statfs.h77
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/termios.h189
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/types.h136
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/uio.h42
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/utmp.h73
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/utmpx.h75
-rw-r--r--ports/sysdeps/unix/sysv/aix/bits/utsname.h23
24 files changed, 2432 insertions, 0 deletions
diff --git a/ports/sysdeps/unix/sysv/aix/bits/dirent.h b/ports/sysdeps/unix/sysv/aix/bits/dirent.h
new file mode 100644
index 000000000..48eeb3288
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/dirent.h
@@ -0,0 +1,55 @@
+/* Directory entry structure `struct dirent'. Old System V version.
+ Copyright (C) 1996, 1997, 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _DIRENT_H
+# error "Never use <bits/dirent.h> directly; include <dirent.h> instead."
+#endif
+
+struct dirent
+ {
+#ifndef __USE_FILE_OFFSET64
+ __off_t d_off;
+ __ino_t d_ino;
+#else
+ __off64_t d_off;
+ __ino64_t d_ino;
+#endif
+ unsigned short int d_reclen;
+ unsigned short int d_namlen;
+ char d_name[256];
+ };
+
+#ifdef __USE_LARGEFILE64
+struct dirent64
+ {
+ __off64_t d_off;
+ __ino64_t d_ino;
+ unsigned short int d_reclen;
+ unsigned short int d_namlen;
+ char d_name[256];
+ };
+#endif
+
+#define d_fileno d_ino /* Backwards compatibility. */
+#define d_offset d_off
+
+#define _DIRENT_HAVE_D_NAMLEN
+#define _DIRENT_HAVE_D_RECLEN
+#define _DIRENT_HAVE_D_OFF
+#undef _DIRENT_HAVE_D_TYPE
diff --git a/ports/sysdeps/unix/sysv/aix/bits/dlfcn.h b/ports/sysdeps/unix/sysv/aix/bits/dlfcn.h
new file mode 100644
index 000000000..e18417527
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/dlfcn.h
@@ -0,0 +1,47 @@
+/* AIX dependent definitions for run-time dynamic loading.
+ Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _DLFCN_H
+# error "Never use <bits/dlfcn.h> directly; include <dlfcn.h> instead."
+#endif
+
+/* The MODE argument to `dlopen' contains one of the following: */
+#define RTLD_LAZY 0x004 /* Lazy function call binding. */
+#define RTLD_NOW 0x002 /* Immediate function call binding. */
+#define RTLD_BINDING_MASK 0x6 /* Mask of binding time value. */
+
+/* If the following bit is set in the MODE argument to `dlopen',
+ the symbols of the loaded object and its dependencies are made
+ visible as if the object were linked directly into the program. */
+#define RTLD_GLOBAL 0x10000
+
+/* Unix98 demands the following flag which is the inverse to RTLD_GLOBAL.
+ The implementation does this by default and so we can define the
+ value to zero. */
+#define RTLD_LOCAL 0x800000
+
+#ifdef __USE_GNU
+/* These are extensions of the AIX kernel. */
+# define RTLD_NOAUTODEFER 0x020000
+# define RTLD_MEMBER 0x040000
+# define RTLD_UNIX_LATEST 0x100000
+#endif
+
+/* No support to profile shared libraries available. */
+# define DL_CALL_FCT(fctp, args) fctp args
diff --git a/ports/sysdeps/unix/sysv/aix/bits/endian.h b/ports/sysdeps/unix/sysv/aix/bits/endian.h
new file mode 100644
index 000000000..8e9b98ef7
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/endian.h
@@ -0,0 +1,23 @@
+/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _ENDIAN_H
+# error "Never use <bits/endian.h> directly; include <endian.h> instead."
+#endif
+
+#define __BYTE_ORDER __BIG_ENDIAN
diff --git a/ports/sysdeps/unix/sysv/aix/bits/errno.h b/ports/sysdeps/unix/sysv/aix/bits/errno.h
new file mode 100644
index 000000000..9f22a965e
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/errno.h
@@ -0,0 +1,153 @@
+/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* This file defines the `errno' constants. */
+
+#if !defined __Emath_defined && (defined _ERRNO_H || defined __need_Emath)
+#undef __need_Emath
+#define __Emath_defined 1
+
+#endif
+
+#ifdef _ERRNO_H
+# undef EDOM
+# undef EILSEQ
+# undef ERANGE
+
+# 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 descriptor. */
+# define ECHILD 10 /* No child processes. */
+# define EAGAIN 11 /* Resource temporarily unavailable. */
+# define ENOMEM 12 /* Not enough space. */
+# define EACCES 13 /* Permission denied. */
+# define EFAULT 14 /* Bad address. */
+# define ENOTBLK 15 /* Block device required. */
+# define EBUSY 16 /* Resource busy. */
+# define EEXIST 17 /* File exists. */
+# define EXDEV 18 /* Improper 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 /* Too many open files in system. */
+# define EMFILE 24 /* Too many open files. */
+# define ENOTTY 25 /* Inappropriate I/O control operation. */
+# define ETXTBSY 26 /* Text file busy. */
+# define EFBIG 27 /* File too large. */
+# define ENOSPC 28 /* No space left on device. */
+# define ESPIPE 29 /* Invalid seek. */
+# define EROFS 30 /* Read only file system. */
+# define EMLINK 31 /* Too many links. */
+# define EPIPE 32 /* Broken pipe. */
+# define EDOM 33 /* Domain error within math function. */
+# define ERANGE 34 /* Result too large. */
+# define ENOMSG 35 /* No message of desired type. */
+# define EIDRM 36 /* Identifier removed. */
+# define ECHRNG 37 /* Channel number out of range. */
+# define EL2NSYNC 38 /* Level 2 not synchronized. */
+# define EL3HLT 39 /* Level 3 halted. */
+# define EL3RST 40 /* Level 3 reset. */
+# define ELNRNG 41 /* Link number out of range. */
+# define EUNATCH 42 /* Protocol driver not attached. */
+# define ENOCSI 43 /* No CSI structure available. */
+# define EL2HLT 44 /* Level 2 halted. */
+# define EDEADLK 45 /* Resource deadlock avoided. */
+# define ENOTREADY 46 /* Device not ready. */
+# define EWRPROTECT 47 /* Write-protected media. */
+# define EFORMAT 48 /* Unformatted media. */
+# define ENOLCK 49 /* No locks available. */
+# define ENOCONNECT 50 /* No connection. */
+# define ESTALE 52 /* No filesystem. */
+# define EDIST 53 /* Old, currently unused AIX errno. */
+# if __USE_XOPEN_EXTENDED
+# define EWOULDBLOCK EAGAIN /* Operation would block. */
+# else /* __USE_XOPEN_EXTENDED */
+# define EWOULDBLOCK 54
+# endif /* __USE_XOPEN_EXTENDED */
+# define EINPROGRESS 55 /* Operation now in progress. */
+# define EALREADY 56 /* Operation already in progress. */
+# define ENOTSOCK 57 /* Socket operation on non-socket. */
+# define EDESTADDRREQ 58 /* Destination address required. */
+# define EDESTADDREQ EDESTADDRREQ /* Destination address required. */
+# define EMSGSIZE 59 /* Message too long. */
+# define EPROTOTYPE 60 /* Protocol wrong type for socket. */
+# define ENOPROTOOPT 61 /* Protocol not available. */
+# define EPROTONOSUPPORT 62 /* Protocol not supported. */
+# define ESOCKTNOSUPPORT 63 /* Socket type not supported. */
+# define EOPNOTSUPP 64 /* Operation not supported on socket. */
+# define EPFNOSUPPORT 65 /* Protocol family not supported. */
+# define EAFNOSUPPORT 66 /* Address family not supported by protocol
+ family. */
+# define EADDRINUSE 67 /* Address already in use. */
+# define EADDRNOTAVAIL 68 /* Can't assign requested address. */
+# define ENETDOWN 69 /* Network is down. */
+# define ENETUNREACH 70 /* Network is unreachable. */
+# define ENETRESET 71 /* Network dropped connection on reset. */
+# define ECONNABORTED 72 /* Software caused connection abort. */
+# define ECONNRESET 73 /* Connection reset by peer. */
+# define ENOBUFS 74 /* No buffer space available. */
+# define EISCONN 75 /* Socket is already connected. */
+# define ENOTCONN 76 /* Socket is not connected. */
+# define ESHUTDOWN 77 /* Can't send after socket shutdown. */
+# define ETIMEDOUT 78 /* Connection timed out. */
+# define ECONNREFUSED 79 /* Connection refused. */
+# define EHOSTDOWN 80 /* Host is down. */
+# define EHOSTUNREACH 81 /* No route to host. */
+# define ERESTART 82 /* Restart the system call. */
+# define EPROCLIM 83 /* Too many processes. */
+# define EUSERS 84 /* Too many users. */
+# define ELOOP 85 /* Too many levels of symbolic links. */
+# define ENAMETOOLONG 86 /* File name too long. */
+# define ENOTEMPTY EEXIST /* Directory not empty. */
+# define EDQUOT 88 /* Disc quota exceeded. */
+# define ECORRUPT 89 /* Invalid file system control data. */
+# define EREMOTE 93 /* Item is not local to host. */
+# define ENOSYS 109 /* Function not implemented POSIX. */
+# define EMEDIA 110 /* Media surface error. */
+# define ESOFT 111 /* I/O completed, but needs relocation. */
+# define ENOATTR 112 /* No attribute found. */
+# define ESAD 113 /* Security authentication denied. */
+# define ENOTRUST 114 /* Not a trusted program. */
+# define ETOOMANYREFS 115 /* Too many references: can't splice. */
+# define EILSEQ 116 /* Invalid wide character. */
+# define ECANCELED 117 /* Asynchronous i/o cancelled. */
+# define ENOSR 118 /* Temp out of streams resources. */
+# define ETIME 119 /* I_STR ioctl timed out. */
+# define EBADMSG 120 /* Wrong message type at stream head. */
+# define EPROTO 121 /* STREAMS protocol error. */
+# define ENODATA 122 /* No message ready at stream head. */
+# define ENOSTR 123 /* Fd is not a stream. */
+# define ECLONEME ERESTART /* This is the way we clone a stream. */
+# define ENOTSUP 124 /* POSIX threads unsupported value. */
+# define EMULTIHOP 125 /* Multihop is not allowed. */
+# define ENOLINK 126 /* The link has been severed. */
+# define EOVERFLOW 127 /* Value too large to be stored in data type.*/
+#endif
+
+#if !defined _ERRNO_H && defined __need_Emath
+# define EDOM 33 /* Math argument out of domain of function. */
+# define EILSEQ 116 /* Illegal byte sequence. */
+# define ERANGE 34 /* Math result not representable. */
+#endif /* !_ERRNO_H && __need_Emath */
diff --git a/ports/sysdeps/unix/sysv/aix/bits/fcntl.h b/ports/sysdeps/unix/sysv/aix/bits/fcntl.h
new file mode 100644
index 000000000..c65b8beeb
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/fcntl.h
@@ -0,0 +1,137 @@
+/* O_*, F_*, FD_* bit values for Linux.
+ Copyright (C) 1995-1999, 2000, 2004 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _FCNTL_H
+# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
+
+
+#include <sys/types.h>
+
+/* open/fcntl. */
+#define O_ACCMODE 0003
+#define O_RDONLY 00
+#define O_WRONLY 01
+#define O_RDWR 02
+#define O_NONBLOCK 04
+#define O_NDELAY O_NONBLOCK
+#define O_APPEND 010
+#define O_SYNC 020
+#define O_FSYNC O_SYNC
+#define O_CREAT 0400 /* not fcntl */
+#define O_TRUNC 01000 /* not fcntl */
+#define O_EXCL 02000 /* not fcntl */
+#define O_NOCTTY 04000 /* not fcntl */
+#define O_ASYNC 0400000
+
+#ifdef __USE_LARGEFILE64
+# define O_LARGEFILE 0400000000
+#endif
+
+/* For now Linux has synchronisity options for data and read operations.
+ We define the symbols here but let them do the same as O_SYNC since
+ this is a superset. */
+#if defined __USE_POSIX199309 || defined __USE_UNIX98
+# define O_DSYNC 020000000 /* Synchronize data. */
+# define O_RSYNC 010000000 /* Synchronize read operations. */
+#endif
+
+/* Values for the second argument to `fcntl'. */
+#define F_DUPFD 0 /* Duplicate file descriptor. */
+#define F_GETFD 1 /* Get file descriptor flags. */
+#define F_SETFD 2 /* Set file descriptor flags. */
+#define F_GETFL 3 /* Get file status flags. */
+#define F_SETFL 4 /* Set file status flags. */
+#ifndef __USE_FILE_OFFSET64
+# define F_GETLK 5 /* Get record locking info. */
+# define F_SETLK 6 /* Set record locking info (non-blocking). */
+# define F_SETLKW 7 /* Set record locking info (blocking). */
+#else
+# define F_GETLK 11 /* Get record locking info. */
+# define F_SETLK 12 /* Set record locking info (non-blocking). */
+# define F_SETLKW 13 /* Set record locking info (blocking). */
+#endif
+
+#ifdef __USE_LARGEFILE64
+# define F_GETLK64 11 /* Get record locking info. */
+# define F_SETLK64 12 /* Set record locking info (non-blocking). */
+# define F_SETLKW64 13 /* Set record locking info (blocking). */
+#endif
+
+#if defined __USE_BSD || defined __USE_UNIX98
+# define F_SETOWN 8 /* Get owner of socket (receiver of SIGIO). */
+# define F_GETOWN 9 /* Set owner of socket (receiver of SIGIO). */
+#endif
+
+/* For F_[GET|SET]FL. */
+#define FD_CLOEXEC 1 /* actually anything with low bit set goes */
+
+/* For posix fcntl() and `l_type' field of a `struct flock' for lockf(). */
+#define F_RDLCK 1 /* Read lock. */
+#define F_WRLCK 2 /* Write lock. */
+#define F_UNLCK 3 /* Remove lock. */
+
+#ifdef __USE_BSD
+/* Operations for bsd flock(), also used by the kernel implementation */
+# define LOCK_SH 1 /* shared lock */
+# define LOCK_EX 2 /* exclusive lock */
+# define LOCK_NB 4 /* or'd with one of the above to prevent
+ blocking */
+# define LOCK_UN 8 /* remove lock */
+#endif
+
+struct flock
+ {
+ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
+ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
+#ifndef __USE_FILE_OFFSET64
+ __off_t l_start; /* Offset where the lock begins. */
+ __off_t l_len; /* Size of the locked area; zero means until EOF. */
+#endif
+ unsigned int l_sysid;
+ __pid_t l_pid; /* Process holding the lock. */
+ int l_vfs;
+#ifdef __USE_FILE_OFFSET64
+ __off64_t l_start; /* Offset where the lock begins. */
+ __off64_t l_len; /* Size of the locked area; zero means until EOF. */
+#endif
+ };
+
+#ifdef __USE_LARGEFILE64
+struct flock64
+ {
+ short int l_type; /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK. */
+ short int l_whence; /* Where `l_start' is relative to (like `lseek'). */
+ unsigned int l_sysid;
+ __pid_t l_pid; /* Process holding the lock. */
+ int l_vfs;
+ __off64_t l_start; /* Offset where the lock begins. */
+ __off64_t l_len; /* Size of the locked area; zero means until EOF. */
+ };
+#endif
+
+/* Define some more compatibility macros to be backward compatible with
+ BSD systems which did not managed to hide these kernel macros. */
+#ifdef __USE_BSD
+# define FAPPEND O_APPEND
+# define FFSYNC O_FSYNC
+# define FASYNC O_ASYNC
+# define FNONBLOCK O_NONBLOCK
+# define FNDELAY O_NDELAY
+#endif /* Use BSD. */
diff --git a/ports/sysdeps/unix/sysv/aix/bits/ioctl-types.h b/ports/sysdeps/unix/sysv/aix/bits/ioctl-types.h
new file mode 100644
index 000000000..d8fe8c8d5
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/ioctl-types.h
@@ -0,0 +1,91 @@
+/* Structure types for pre-termios terminal ioctls. AIX version.
+ Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_IOCTL_H
+# error "Never use <bits/ioctl-types.h> directly; include <sys/ioctl.h> instead."
+#endif
+
+/* Constants for use with `ioctl'. */
+#define TIOC ('T' << 8)
+#define TCGETS (TIOC | 1)
+#define TCSETS (TIOC | 2)
+#define TCSETSW (TIOC | 3)
+#define TCSETSF (TIOC | 4)
+#define TCGETA (TIOC | 5)
+#define TCSETA (TIOC | 6)
+#define TCSETAW (TIOC | 7)
+#define TCSETAF (TIOC | 8)
+#define TCSBRK (TIOC | 9)
+#define TCSBREAK (TIOC | 10)
+#define TCXONC (TIOC | 11)
+#define TCFLSH (TIOC | 12)
+#define TCGLEN (TIOC | 13)
+#define TCSLEN (TIOC | 14)
+#define TCSAK (TIOC | 15)
+#define TCQSAK (TIOC | 16)
+#define TCTRUST (TIOC | 17)
+#define TCQTRUST (TIOC | 18)
+#define TCSMAP (TIOC | 19)
+#define TCGMAP (TIOC | 20)
+#define TCKEP (TIOC | 21)
+#define TCGSAK (TIOC | 22)
+#define TCLOOP (TIOC | 23)
+#define TCVPD (TIOC | 24)
+#define TCREG (TIOC | 25)
+#define TCGSTATUS (TIOC | 26)
+#define TCSCONTROL (TIOC | 27)
+#define TCSCSMAP (TIOC | 28)
+#define TCGCSMAP (TIOC | 29)
+#define TCMGR TCSAK
+#define TCQMGR TCQSAK
+#define TIONREAD FIONREAD
+
+
+
+struct winsize
+{
+ unsigned short int ws_row;
+ unsigned short int ws_col;
+ unsigned short int ws_xpixel;
+ unsigned short int ws_ypixel;
+};
+
+#define NCC 8
+struct termio
+{
+ unsigned short int c_iflag; /* input mode flags */
+ unsigned short int c_oflag; /* output mode flags */
+ unsigned short int c_cflag; /* control mode flags */
+ unsigned short int c_lflag; /* local mode flags */
+ char c_line; /* line discipline */
+ unsigned char c_cc[NCC]; /* control characters */
+};
+
+/* modem lines */
+#define TIOCM_LE 0x001
+#define TIOCM_DTR 0x002
+#define TIOCM_RTS 0x004
+#define TIOCM_ST 0x008
+#define TIOCM_SR 0x010
+#define TIOCM_CTS 0x020
+#define TIOCM_CAR 0x040
+#define TIOCM_RNG 0x080
+#define TIOCM_DSR 0x100
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RI TIOCM_RNG
diff --git a/ports/sysdeps/unix/sysv/aix/bits/ioctls.h b/ports/sysdeps/unix/sysv/aix/bits/ioctls.h
new file mode 100644
index 000000000..8023c144d
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/ioctls.h
@@ -0,0 +1,248 @@
+/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_IOCTL_H
+# error "Never use <bits/ioctls.h> directly; include <sys/ioctl.h> instead."
+#endif
+
+
+#define IOCPARM_MASK 0x7f /* parameters must be < 128 bytes */
+#define IOC_VOID 0x20000000 /* no parameters */
+#define IOC_OUT 0x40000000 /* copy out parameters */
+#define IOC_IN (0x40000000<<1) /* copy in parameters */
+#define IOC_INOUT (IOC_IN|IOC_OUT)
+#define _IO(x,y) (IOC_VOID|(x<<8)|y)
+#define _IOR(x,y,t) (IOC_OUT|((sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
+#define _IOW(x,y,t) (IOC_IN|((sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
+#define _IOWR(x,y,t) (IOC_INOUT|((sizeof(t)&IOCPARM_MASK)<<16)|(x<<8)|y)
+
+#define TIOCGETD _IOR('t', 0, int) /* get line discipline */
+#define TIOCSETD _IOW('t', 1, int) /* set line discipline */
+#define TIOCHPCL _IO('t', 2) /* hang up on last close */
+#define TIOCMODG _IOR('t', 3, int) /* get modem control state */
+#define TIOCMODS _IOW('t', 4, int) /* set modem control state */
+#define TIOCGETP _IOR('t', 8,struct sgttyb)/* get parameters -- gtty */
+#define TIOCSETP _IOW('t', 9,struct sgttyb)/* set parameters -- stty */
+#define TIOCSETN _IOW('t',10,struct sgttyb)/* as above, but no flushtty */
+#define TIOCEXCL _IO('t', 13) /* set exclusive use of tty */
+#define TIOCNXCL _IO('t', 14) /* reset exclusive use of tty */
+#define TIOCFLUSH _IOW('t', 16, int) /* flush buffers */
+#define TIOCSETC _IOW('t',17,struct tchars)/* set special characters */
+#define TIOCGETC _IOR('t',18,struct tchars)/* get special characters */
+#define TANDEM 0x00000001 /* send stopc on out q full */
+#define CBREAK 0x00000002 /* half-cooked mode */
+#define LCASE 0x00000004 /* simulate lower case */
+#define CRMOD 0x00000010 /* map \r to \r\n on output */
+#define RAW 0x00000020 /* no i/o processing */
+#define ODDP 0x00000040 /* get/send odd parity */
+#define EVENP 0x00000080 /* get/send even parity */
+#define ANYP 0x000000c0 /* get any parity/send none */
+#define CRDELAY 0x00000300 /* \r delay */
+#define TBDELAY 0x00000c00 /* horizontal tab delay */
+#define XTABS 0x00000c00 /* expand tabs on output */
+#define BSDELAY 0x00001000 /* \b delay */
+#define VTDELAY 0x00002000 /* vertical tab delay */
+#define NLDELAY 0x0000c000 /* \n delay */
+#define NL2 0x00008000 /* vt05 */
+#define NL3 0x0000c000
+#define ALLDELAY (NLDELAY|TBDELAY|CRDELAY|VTDELAY|BSDELAY)
+#define PRTERA 0x00020000 /* \ ... / erase */
+#define CRTERA 0x00040000 /* " \b " to wipe out char */
+#define TILDE 0x00080000 /* hazeltine tilde kludge */
+#define LITOUT 0x00200000 /* literal output */
+#define CRTBS 0x00400000 /* do backspacing for crt */
+#define MDMBUF 0x00800000 /* dtr pacing */
+#define NOHANG 0x01000000 /* no SIGHUP on carrier drop */
+#define L001000 0x02000000
+#define CRTKIL 0x04000000 /* kill line with " \b " */
+#define PASS8 0x08000000
+#define CTLECH 0x10000000 /* echo control chars as ^X */
+#define DECCTQ 0x40000000 /* only ^Q starts after ^S */
+#define NOFLUSH 0x80000000 /* no output flush on signal */
+
+
+/* SYS V REL. 4 PTY IOCTLs */
+#define UNLKPT _IO('t',70) /* unlock slave pty */
+#define ISPTM _IO('t',71) /* ret. maj+min of pty master */
+#define ISPTS _IO('t',73) /* return maj+min of slave */
+#define GRTPT _IO('t',74) /* grantpt slave pty*/
+#define RLOGIND _IO('t',75) /* for rlogind protocol in ptydd */
+#define TELNETDP _IO('t',76) /* for telnetd protocol in ptydd */
+
+#define TIOCCONS _IOW('t', 98, int) /* become virtual console */
+#define TIOCGSID _IOR('t', 72, int) /* get the tty session id */
+
+ /* locals, from 127 down */
+#define TIOCLBIS _IOW('t', 127, int) /* bis local mode bits */
+#define TIOCLBIC _IOW('t', 126, int) /* bic local mode bits */
+#define TIOCLSET _IOW('t', 125, int) /* set entire mode word */
+#define TIOCLGET _IOR('t', 124, int) /* get local modes */
+#define LCRTBS (CRTBS>>16)
+#define LPRTERA (PRTERA>>16)
+#define LCRTERA (CRTERA>>16)
+#define LTILDE (TILDE>>16)
+#define LMDMBUF (MDMBUF>>16)
+#define LLITOUT (LITOUT>>16)
+#define LTOSTOP (TOSTOP>>16)
+#define LFLUSHO (FLUSHO>>16)
+#define LNOHANG (NOHANG>>16)
+#define LCRTKIL (CRTKIL>>16)
+#define LPASS8 (PASS8>>16)
+#define LCTLECH (CTLECH>>16)
+#define LPENDIN (PENDIN>>16)
+#define LDECCTQ (DECCTQ>>16)
+#define LNOFLSH (NOFLUSH>>16)
+#define TIOCSBRK _IO('t', 123) /* set break bit */
+#define TIOCCBRK _IO('t', 122) /* clear break bit */
+#define TIOCSDTR _IO('t', 121) /* set data terminal ready */
+#define TIOCCDTR _IO('t', 120) /* clear data terminal ready */
+#define TIOCGPGRP _IOR('t', 119, int) /* get process group */
+#define TIOCSPGRP _IOW('t', 118, int) /* set process gorup */
+#define TIOCSLTC _IOW('t',117,struct ltchars)/* set local special chars */
+#define TIOCGLTC _IOR('t',116,struct ltchars)/* get local special chars */
+#define TIOCOUTQ _IOR('t', 115, int) /* output queue size */
+#define TIOCSTI _IOW('t', 114, char) /* simulate terminal input */
+#define TIOCNOTTY _IO('t', 113) /* void tty association */
+#define TIOCPKT _IOW('t', 112, int) /* pty: set/clear packet mode */
+#define TIOCPKT_DATA 0x00 /* data packet */
+#define TIOCPKT_FLUSHREAD 0x01 /* flush packet */
+#define TIOCPKT_FLUSHWRITE 0x02 /* flush packet */
+#define TIOCPKT_STOP 0x04 /* stop output */
+#define TIOCPKT_START 0x08 /* start output */
+#define TIOCPKT_NOSTOP 0x10 /* no more ^S, ^Q */
+#define TIOCPKT_DOSTOP 0x20 /* now do ^S ^Q */
+#define TIOCSTOP _IO('t', 111) /* stop output, like ^S */
+#define TIOCSTART _IO('t', 110) /* start output, like ^Q */
+#define TIOCMSET _IOW('t', 109, int) /* set all modem bits */
+#define TIOCMBIS _IOW('t', 108, int) /* bis modem bits */
+#define TIOCMBIC _IOW('t', 107, int) /* bic modem bits */
+#define TIOCMGET _IOR('t', 106, int) /* get all modem bits */
+#define TIOCREMOTE _IOW('t', 105, int) /* remote input editing */
+#define TIOCGWINSZ _IOR('t', 104, struct winsize) /* get window size */
+#define TIOCSWINSZ _IOW('t', 103, struct winsize) /* set window size */
+#define TIOCUCNTL _IOW('t', 102, int) /* pty: set/clr usr cntl mode */
+/* SLIP (Serial Line IP) ioctl's */
+#define SLIOCGUNIT _IOR('t', 101, int) /* get slip unit number */
+#define SLIOCSFLAGS _IOW('t', 89, int) /* set configuration flags */
+#define SLIOCGFLAGS _IOR('t', 90, int) /* get configuration flags */
+#define SLIOCSATTACH _IOWR('t', 91, int) /* Attach slip i.f. to tty */
+#define UIOCCMD(n) _IO('u', n) /* usr cntl op "n" */
+
+#define OTTYDISC 0 /* old, v7 std tty driver */
+#define NETLDISC 1 /* line discip for berk net */
+#define NTTYDISC 2 /* new tty discipline */
+#define TABLDISC 3 /* tablet discipline */
+#define SLIPDISC 4 /* serial IP discipline */
+
+#define FIOCLEX _IO('f', 1) /* set close on exec */
+#define FIONCLEX _IO('f', 2) /* clear close on exec */
+/* another local */
+
+#define FIONREAD _IOR('f', 127, int) /* get # bytes to read */
+#define FIONBIO _IOW('f', 126, int) /* set/clear non-blocking i/o */
+#define FIOASYNC _IOW('f', 125, int) /* set/clear async i/o */
+
+#define FIOSETOWN _IOW('f', 124, int) /* set owner */
+#define FIOGETOWN _IOR('f', 123, int) /* get owner */
+#define FIOASYNCQX _IOW('f', 122, int) /* set/clear async queueing */
+
+/* socket i/o controls */
+#define SIOCSHIWAT _IOW('s', 0, int) /* set high watermark */
+#define SIOCGHIWAT _IOR('s', 1, int) /* get high watermark */
+#define SIOCSLOWAT _IOW('s', 2, int) /* set low watermark */
+#define SIOCGLOWAT _IOR('s', 3, int) /* get low watermark */
+#define SIOCATMARK _IOR('s', 7, int) /* at oob mark? */
+#define SIOCSPGRP _IOW('s', 8, int) /* set process group */
+#define SIOCGPGRP _IOR('s', 9, int) /* get process group */
+
+#define SIOCADDRT (int)_IOW('r', 10, struct ortentry) /* add route */
+#define SIOCDELRT (int)_IOW('r', 11, struct ortentry) /* delete route */
+
+#define SIOCSIFADDR (int)_IOW('i', 12, struct oifreq) /* set ifnet address */
+#define OSIOCGIFADDR (int)_IOWR('i',13, struct oifreq) /* get ifnet address */
+#define SIOCGIFADDR (int)_IOWR('i',33, struct oifreq) /* get ifnet address */
+#define SIOCSIFDSTADDR (int)_IOW('i', 14, struct oifreq) /* set p-p address */
+#define OSIOCGIFDSTADDR (int)_IOWR('i',15, struct oifreq) /* get p-p address */
+#define SIOCGIFDSTADDR (int)_IOWR('i',34, struct oifreq) /* get p-p address */
+#define SIOCSIFFLAGS (int)_IOW('i', 16, struct oifreq) /* set ifnet flags */
+#define SIOCGIFFLAGS (int)_IOWR('i',17, struct oifreq) /* get ifnet flags */
+#define OSIOCGIFBRDADDR (int)_IOWR('i',18, struct oifreq) /* get broadcast addr */
+#define SIOCGIFBRDADDR (int)_IOWR('i',35, struct oifreq) /* get broadcast addr */
+#define SIOCSIFBRDADDR (int)_IOW('i',19, struct oifreq) /* set broadcast addr */
+#define OSIOCGIFCONF (int)_IOWR('i',20, struct ifconf) /* get ifnet list */
+#define CSIOCGIFCONF (int)_IOWR('i',36, struct ifconf) /* get ifnet list */
+#define SIOCGIFCONF (int)_IOWR('i',69, struct ifconf) /* get ifnet list */
+#define OSIOCGIFNETMASK (int)_IOWR('i',21, struct oifreq) /* get net addr mask */
+#define SIOCGIFNETMASK (int)_IOWR('i',37, struct oifreq) /* get net addr mask */
+#define SIOCSIFNETMASK (int)_IOW('i',22, struct oifreq) /* set net addr mask */
+#define SIOCGIFMETRIC (int)_IOWR('i',23, struct oifreq) /* get IF metric */
+#define SIOCSIFMETRIC (int)_IOW('i',24, struct oifreq) /* set IF metric */
+#define SIOCDIFADDR (int)_IOW('i',25, struct oifreq) /* delete IF addr */
+#define SIOCAIFADDR (int)_IOW('i',26, struct ifaliasreq) /* add/chg IF alias */
+#define SIOCSIFSUBCHAN (int)_IOW('i',27, struct oifreq) /* set subchannel adr.*/
+#define SIOCSIFNETDUMP (int)_IOW('i',28, struct oifreq) /* set netdump fastwrt*/
+
+#define SIOCSARP (int)_IOW('i', 30, struct arpreq) /* set arp entry */
+#define OSIOCGARP (int)_IOWR('i',31, struct arpreq) /* get arp entry */
+#define SIOCGARP (int)_IOWR('i',38, struct arpreq) /* get arp entry */
+#define SIOCDARP (int)_IOW('i', 32, struct arpreq) /* delete arp entry */
+
+#define SIOCSIFOPTIONS (int)_IOW('i', 41, struct oifreq) /* set ifnet options */
+#define SIOCGIFOPTIONS (int)_IOWR('i',42, struct oifreq) /* get ifnet options */
+#define SIOCADDMULTI (int)_IOW('i', 49, struct ifreq) /* add multicast addr */
+#define SIOCDELMULTI (int)_IOW('i', 50, struct ifreq) /* del multicast addr */
+#define SIOCGETVIFCNT (int)_IOWR('u', 51, struct sioc_vif_req)/* vif pkt cnt */
+#define SIOCGETSGCNT (int)_IOWR('u', 52, struct sioc_sg_req) /* s,g pkt cnt */
+
+#define SIOCADDNETID (int)_IOW('i',87, struct oifreq) /* set netids */
+#define SIOCSIFMTU (int)_IOW('i',88, struct oifreq) /* set mtu */
+#define SIOCGIFMTU (int)_IOWR('i',86, struct oifreq) /* get mtu */
+
+#define SIOCSNETOPT (int)_IOW('i', 90, struct optreq) /* set network option */
+#define SIOCGNETOPT (int)_IOWR('i', 91, struct optreq) /* get network option */
+#define SIOCDNETOPT (int)_IOWR('i', 92, struct optreq) /* set default */
+
+#define SIOCSX25XLATE (int)_IOW('i', 99, struct oifreq) /* set xlate tab */
+#define SIOCGX25XLATE (int)_IOWR('i',100, struct oifreq) /* get xlate tab */
+#define SIOCDX25XLATE (int)_IOW('i', 101, struct oifreq) /* delete xlate tab */
+
+#define SIOCIFDETACH (int)_IOW('i', 102, struct ifreq) /* detach an ifnet */
+#define SIOCIFATTACH (int)_IOW('i', 103, struct ifreq) /* attach an ifnet */
+
+#define SIOCGNMTUS (int)_IO('i',110) /* get NMTUs */
+#define SIOCGETMTUS (int)_IO('i',111) /* get common_mtus */
+#define SIOCADDMTU (int)_IOW('i',112, int) /* add mtu */
+#define SIOCDELMTU (int)_IOW('i',113, int) /* delete mtu */
+
+#define SIOCGIFGIDLIST (int)_IO('i', 104) /* get gidlist */
+#define SIOCSIFGIDLIST (int)_IO('i', 105) /* set gidlist */
+
+#define SIOCGSIZIFCONF (int)_IOR('i', 106, int) /* get size for SIOCGIFCONF */
+
+#define SIOCIF_ATM_UBR (int)_IOW('i',120,struct ifreq) /* set ubr rate */
+#define SIOCIF_ATM_SNMPARP (int)_IOW('i',121,struct ifreq) /* atm snmp arp */
+#define SIOCIF_ATM_IDLE (int)_IOW('i',122,struct ifreq) /* set idle time */
+#define SIOCIF_ATM_DUMPARP (int)_IOW('i',123,struct ifreq) /* atm dump arp */
+#define SIOCIF_ATM_SVC (int)_IOW('i',124,struct ifreq) /* atmif init */
+#define SIOCIF_ATM_DARP (int)_IOW('i',125,struct ifreq) /* del atmarp */
+#define SIOCIF_ATM_GARP (int)_IOW('i',126,struct ifreq) /* get atmarp */
+#define SIOCIF_ATM_SARP (int)_IOW('i',127,struct ifreq) /* set atmarp */
+
+#define SIOCGISNO (int)_IOWR('i',107, struct oifreq) /* get IF network options */
+#define SIOCSISNO (int)_IOW('i', 108, struct oifreq) /* set IF network options */
+#define SIOCGIFBAUDRATE (int)_IOWR('i', 109, struct oifreq) /* get ifnet's if_baudrate */
diff --git a/ports/sysdeps/unix/sysv/aix/bits/poll.h b/ports/sysdeps/unix/sysv/aix/bits/poll.h
new file mode 100644
index 000000000..b9f2f7155
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/poll.h
@@ -0,0 +1,43 @@
+/* Copyright (C) 1997, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_POLL_H
+# error "Never use <bits/poll.h> directly; include <sys/poll.h> instead."
+#endif
+
+/* Event types that can be polled for. These bits may be set in `events'
+ to indicate the interesting event types; they will appear in `revents'
+ to indicate the status of the file descriptor. */
+#define POLLIN 0x0001 /* There is data to read. */
+#define POLLPRI 0x0002 /* There is urgent data to read. */
+#define POLLOUT 0x0004 /* Writing now will not block. */
+
+#ifdef __USE_XOPEN
+/* These values are defined in XPG4.2. */
+# define POLLRDNORM 0x0010 /* Normal data may be read. */
+# define POLLRDBAND 0x0020 /* Priority data may be read. */
+# define POLLWRNORM POLLOUT /* Writing now will not block. */
+# define POLLWRBAND 0x0040 /* Priority data may be written. */
+#endif
+
+/* Event types always implicitly polled for. These bits need not be set in
+ `events', but they will appear in `revents' to indicate the status of
+ the file descriptor. */
+#define POLLERR 0x4000 /* Error condition. */
+#define POLLHUP 0x2000 /* Hung up. */
+#define POLLNVAL 0x8000 /* Invalid polling request. */
diff --git a/ports/sysdeps/unix/sysv/aix/bits/resource.h b/ports/sysdeps/unix/sysv/aix/bits/resource.h
new file mode 100644
index 000000000..cc851e8a0
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/resource.h
@@ -0,0 +1,191 @@
+/* Bit values & structures for resource limits. AIX version.
+ Copyright (C) 1994, 1996-1999, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_RESOURCE_H
+# error "Never use <bits/resource.h> directly; include <sys/resource.h> instead."
+#endif
+
+#include <bits/types.h>
+
+/* Transmute defines to enumerations. The macro re-definitions are
+ necessary because some programs want to test for operating system
+ features with #ifdef RUSAGE_SELF. In ISO C the reflexive
+ definition is a no-op. */
+
+/* Kinds of resource limit. */
+enum __rlimit_resource
+{
+ /* Per-process CPU limit, in seconds. */
+ RLIMIT_CPU = 0,
+#define RLIMIT_CPU RLIMIT_CPU
+
+ /* Largest file that can be created, in bytes. */
+ RLIMIT_FSIZE = 1,
+#define RLIMIT_FSIZE RLIMIT_FSIZE
+
+ /* Maximum size of data segment, in bytes. */
+ RLIMIT_DATA = 2,
+#define RLIMIT_DATA RLIMIT_DATA
+
+ /* Maximum size of stack segment, in bytes. */
+ RLIMIT_STACK = 3,
+#define RLIMIT_STACK RLIMIT_STACK
+
+ /* Largest core file that can be created, in bytes. */
+ RLIMIT_CORE = 4,
+#define RLIMIT_CORE RLIMIT_CORE
+
+ /* Largest resident set size, in bytes.
+ This affects swapping; processes that are exceeding their
+ resident set size will be more likely to have physical memory
+ taken from them. */
+ RLIMIT_RSS = 5,
+#define RLIMIT_RSS RLIMIT_RSS
+
+ /* Address space limit (?) */
+ RLIMIT_AS = 6,
+#define RLIMIT_AS RLIMIT_AS
+
+ /* Number of open files. */
+ RLIMIT_NOFILE = 7,
+ RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same. */
+#define RLIMIT_NOFILE RLIMIT_NOFILE
+#define RLIMIT_OFILE RLIMIT_OFILE
+
+ RLIM_NLIMITS = 10
+#define RLIMIT_NLIMITS RLIMIT_NLIMITS
+#define RLIM_NLIMITS RLIM_NLIMITS
+};
+
+/* Value to indicate that there is no limit. */
+#ifndef __USE_FILE_OFFSET64
+# define RLIM_INFINITY ((long int)(~0UL >> 1))
+#else
+# define RLIM_INFINITY 0x7fffffffffffffffLL
+#endif
+
+#ifdef __USE_LARGEFILE64
+# define RLIM64_INFINITY 0x7fffffffffffffffLL
+#endif
+
+#define RLIM_SAVED_MAX (RLIM_INFINITY - 1)
+#define RLIM_SAVED_CUR (RLIM_INFINITY - 2)
+
+
+/* Type for resource quantity measurement. */
+#ifndef __USE_FILE_OFFSET64
+typedef __rlim_t rlim_t;
+#else
+typedef __rlim64_t rlim_t;
+#endif
+#ifdef __USE_LARGEFILE64
+typedef __rlim64_t rlim64_t;
+#endif
+
+struct rlimit
+ {
+ /* The current (soft) limit. */
+ rlim_t rlim_cur;
+ /* The hard limit. */
+ rlim_t rlim_max;
+ };
+
+#ifdef __USE_LARGEFILE64
+struct rlimit64
+ {
+ /* The current (soft) limit. */
+ rlim64_t rlim_cur;
+ /* The hard limit. */
+ rlim64_t rlim_max;
+ };
+#endif
+
+/* Whose usage statistics do you want? */
+enum __rusage_who
+{
+ /* The calling process. */
+ RUSAGE_SELF = 0,
+#define RUSAGE_SELF RUSAGE_SELF
+
+ /* All of its terminated child processes. */
+ RUSAGE_CHILDREN = -1
+#define RUSAGE_CHILDREN RUSAGE_CHILDREN
+};
+
+#define __need_timeval
+#include <bits/time.h> /* For `struct timeval'. */
+
+/* Structure which says how much of each resource has been used. */
+struct rusage
+ {
+ /* Total amount of user time used. */
+ struct timeval ru_utime;
+ /* Total amount of system time used. */
+ struct timeval ru_stime;
+ /* Maximum resident set size (in kilobytes). */
+ long int ru_maxrss;
+ /* Amount of sharing of text segment memory
+ with other processes (kilobyte-seconds). */
+ long int ru_ixrss;
+ /* Amount of data segment memory used (kilobyte-seconds). */
+ long int ru_idrss;
+ /* Amount of stack memory used (kilobyte-seconds). */
+ long int ru_isrss;
+ /* Number of soft page faults (i.e. those serviced by reclaiming
+ a page from the list of pages awaiting reallocation. */
+ long int ru_minflt;
+ /* Number of hard page faults (i.e. those that required I/O). */
+ long int ru_majflt;
+ /* Number of times a process was swapped out of physical memory. */
+ long int ru_nswap;
+ /* Number of input operations via the file system. Note: This
+ and `ru_oublock' do not include operations with the cache. */
+ long int ru_inblock;
+ /* Number of output operations via the file system. */
+ long int ru_oublock;
+ /* Number of IPC messages sent. */
+ long int ru_msgsnd;
+ /* Number of IPC messages received. */
+ long int ru_msgrcv;
+ /* Number of signals delivered. */
+ long int ru_nsignals;
+ /* Number of voluntary context switches, i.e. because the process
+ gave up the process before it had to (usually to wait for some
+ resource to be available). */
+ long int ru_nvcsw;
+ /* Number of involuntary context switches, i.e. a higher priority process
+ became runnable or the current process used up its time slice. */
+ long int ru_nivcsw;
+ };
+
+/* Priority limits. */
+#define PRIO_MIN -20 /* Minimum priority a process can have. */
+#define PRIO_MAX 20 /* Maximum priority a process can have. */
+
+/* The type of the WHICH argument to `getpriority' and `setpriority',
+ indicating what flavor of entity the WHO argument specifies. */
+enum __priority_which
+{
+ PRIO_PROCESS = 0, /* WHO is a process ID. */
+#define PRIO_PROCESS PRIO_PROCESS
+ PRIO_PGRP = 1, /* WHO is a process group ID. */
+#define PRIO_PGRP PRIO_PGRP
+ PRIO_USER = 2 /* WHO is a user ID. */
+#define PRIO_USER PRIO_USER
+};
diff --git a/ports/sysdeps/unix/sysv/aix/bits/setjmp.h b/ports/sysdeps/unix/sysv/aix/bits/setjmp.h
new file mode 100644
index 000000000..82a58ae06
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/setjmp.h
@@ -0,0 +1,46 @@
+/* Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/* Define the machine-dependent type `jmp_buf'. PowerPC version. */
+
+#ifndef _SETJMP_H
+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+#endif
+
+/* The previous bits/setjmp.h had __jmp_buf defined as a structure.
+ We use an array of 'long int' instead, to make writing the
+ assembler easier. Naturally, user code should not depend on
+ either representation. */
+
+#if defined __USE_MISC || defined _ASM
+# define JB_GPR1 0 /* Also known as the stack pointer */
+# define JB_GPR2 1
+# define JB_LR 2 /* The address we will return to */
+# define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total */
+# define JB_CR 21 /* Condition code registers. */
+# define JB_FPRS 22 /* FPRs 14 through 31 are saved, 18*2 words total */
+#endif
+
+#ifndef _ASM
+typedef long int __jmp_buf[64];
+#endif
+
+/* Test if longjmp to JMPBUF would unwind the frame
+ containing a local variable at ADDRESS. */
+#define _JMPBUF_UNWINDS(jmpbuf, address) \
+ ((void *) (address) < (void *) (jmpbuf)[JB_GPR1])
diff --git a/ports/sysdeps/unix/sysv/aix/bits/sigaction.h b/ports/sysdeps/unix/sysv/aix/bits/sigaction.h
new file mode 100644
index 000000000..55414b8f1
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/sigaction.h
@@ -0,0 +1,72 @@
+/* The proper definitions for AIX's sigaction.
+ Copyright (C) 1993-1999, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SIGNAL_H
+# error "Never include <bits/sigaction.h> directly; use <signal.h> instead."
+#endif
+
+/* Structure describing the action to be taken when a signal arrives. */
+struct sigaction
+ {
+ /* Signal handler. */
+#ifdef __USE_POSIX199309
+ union
+ {
+ /* Used if SA_SIGINFO is not set. */
+ __sighandler_t sa_handler;
+ /* Used if SA_SIGINFO is set. */
+ void (*sa_sigaction) (int, siginfo_t *, void *);
+ }
+ __sigaction_handler;
+# define sa_handler __sigaction_handler.sa_handler
+# define sa_sigaction __sigaction_handler.sa_sigaction
+#else
+ __sighandler_t sa_handler;
+#endif
+
+ /* Additional set of signals to be blocked. */
+ __sigset_t sa_mask;
+
+ /* Special flags. */
+ int sa_flags;
+ };
+
+/* Bits in `sa_flags'. */
+#define SA_NOCLDSTOP 4 /* Don't send SIGCHLD when children stop. */
+#define SA_NOCLDWAIT 0x400 /* Don't create on death of child. */
+#define SA_SIGINFO 0x100 /* Invoke signal-catching function with
+ three arguments instead of one. */
+#if defined __USE_UNIX98 || defined __USE_MISC
+# define SA_ONSTACK 0x00000001 /* Use signal stack by using `sa_restorer'. */
+# define SA_RESTART 0x00000008 /* Restart syscall on signal return. */
+# define SA_NODEFER 0x00000200 /* Don't automatically block the signal when
+ its handler is being executed. */
+# define SA_RESETHAND 0x00000002 /* Reset to SIG_DFL on entry to handler. */
+#endif
+#ifdef __USE_MISC
+/* Some aliases for the SA_ constants. */
+# define SA_NOMASK SA_NODEFER
+# define SA_ONESHOT SA_RESETHAND
+# define SA_STACK SA_ONSTACK
+#endif
+
+/* Values for the HOW argument to `sigprocmask'. */
+#define SIG_BLOCK 0 /* Block signals. */
+#define SIG_UNBLOCK 1 /* Unblock signals. */
+#define SIG_SETMASK 2 /* Set the set of blocked signals. */
diff --git a/ports/sysdeps/unix/sysv/aix/bits/sigcontext.h b/ports/sysdeps/unix/sysv/aix/bits/sigcontext.h
new file mode 100644
index 000000000..40bec1b71
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/sigcontext.h
@@ -0,0 +1,32 @@
+/* Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
+# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
+#endif
+
+#include <sys/ucontext.h>
+
+
+struct sigcontext
+{
+ int sc_onstack; /* Sigstack state to restore. */
+ sigset_t sc_mask; /* Signal mask to restore. */
+ int sc_uerror; /* u_error to restore. */
+ struct mcontext_t sc_jmpbuf; /* Process context to restore. */
+};
diff --git a/ports/sysdeps/unix/sysv/aix/bits/signum.h b/ports/sysdeps/unix/sysv/aix/bits/signum.h
new file mode 100644
index 000000000..67eb94960
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/signum.h
@@ -0,0 +1,96 @@
+/* Signal number definitions. AIX version.
+ Copyright (C) 1995-1999, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifdef _SIGNAL_H
+
+/* Fake signal functions. */
+#define SIG_ERR ((__sighandler_t) -1) /* Error return. */
+#define SIG_DFL ((__sighandler_t) 0) /* Default action. */
+#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */
+
+#ifdef __USE_UNIX98
+# define SIG_HOLD ((__sighandler_t) 2) /* Add signal to hold mask. */
+# define SIG_CATCHE ((__sighandler_t) 3)
+#endif
+
+
+/* Signals. */
+#define SIGHUP 1 /* Hangup (POSIX). */
+#define SIGINT 2 /* Interrupt (ANSI). */
+#define SIGQUIT 3 /* Quit (POSIX). */
+#define SIGILL 4 /* Illegal instruction (ANSI). */
+#define SIGTRAP 5 /* Trace trap (POSIX). */
+#define SIGABRT 6 /* Abort (ANSI). */
+#define SIGIOT SIGABRT /* Abort (terminal) process. */
+#define SIGEMT 7 /* EMT instruction. */
+#define SIGFPE 8 /* Floating-point exception (ANSI). */
+#define SIGKILL 9 /* Kill, unblockable (POSIX). */
+#define SIGBUS 10 /* BUS error (4.2 BSD). */
+#define SIGSEGV 11 /* Segmentation violation (ANSI). */
+#define SIGSYS 12 /* Bad system call. */
+#define SIGPIPE 13 /* Broken pipe (POSIX). */
+#define SIGALRM 14 /* Alarm clock (POSIX). */
+#define SIGTERM 15 /* Termination (ANSI). */
+#define SIGURG 16 /* Urgent condition on socket (4.2 BSD). */
+#define SIGIOINT SIGURG /* Printer to backend error signal. */
+#define SIGSTOP 17 /* Stop, unblockable (POSIX). */
+#define SIGTSTP 18 /* Keyboard stop (POSIX). */
+#define SIGCONT 19 /* Continue (POSIX). */
+#define SIGCLD SIGCHLD /* Same as SIGCHLD (System V). */
+#define SIGCHLD 20 /* Child status has changed (POSIX). */
+#define SIGTTIN 21 /* Background read from tty (POSIX). */
+#define SIGTTOU 22 /* Background write to tty (POSIX). */
+#define SIGIO 23 /* I/O now possible (4.2 BSD). */
+#define SIGAIO SIGIO /* Base LAN I/O. */
+#define SIGPTY SIGIO /* PTY I/O. */
+#define SIGPOLL SIGIO /* ANother I/O event. */
+#define SIGXCPU 24 /* CPU limit exceeded (4.2 BSD). */
+#define SIGXFSZ 25 /* File size limit exceeded (4.2 BSD). */
+#define SIGMSG 27 /* Input data is in the ring buffer. */
+#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
+#define SIGPWR 29 /* Power failure restart (System V). */
+#define SIGUSR1 30 /* User-defined signal 1 (POSIX). */
+#define SIGUSR2 31 /* User-defined signal 2 (POSIX). */
+#define SIGPROF 32 /* Profiling alarm clock (4.2 BSD). */
+#define SIGDANGER 33 /* System crash imminent. */
+#define SIGVTALRM 34 /* Virtual alarm clock (4.2 BSD). */
+#define SIGMIGRATE 35 /* Migrate process. */
+#define SIGPRE 36 /* Programming exception. */
+#define SIGVIRT 37 /* AIX virtual time alarm. */
+#define SIGARLM1 38 /* Reserved, don't use. */
+#define SIGWAITING 39 /* Reserved, don't use. */
+#define SIGCPUFAIL 59 /* Predictive de-configuration of processors.*/
+#define SIGKAP 60 /* Keep alive poll from native keyboard. */
+#define SIGGRANT SIGKAP /* Monitor mode granted. */
+#define SIGRETRACT 61 /* Monitor mode should be relinguished. */
+#define SIGSOUND 62 /* Sound control has completed. */
+#define SIGSAK 63 /* Secure attentation key. */
+
+#define _NSIG 64 /* Biggest signal number + 1
+ (including real-time signals). */
+
+#define SIGRTMIN (__libc_current_sigrtmin ())
+#define SIGRTMAX (__libc_current_sigrtmax ())
+
+/* These are the hard limits of the kernel. These values should not be
+ used directly at user level. */
+#define __SIGRTMIN 888
+#define __SIGRTMAX 999
+
+#endif /* <signal.h> included. */
diff --git a/ports/sysdeps/unix/sysv/aix/bits/sigset.h b/ports/sysdeps/unix/sysv/aix/bits/sigset.h
new file mode 100644
index 000000000..0dc6b40a7
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/sigset.h
@@ -0,0 +1,125 @@
+/* __sig_atomic_t, __sigset_t, and related definitions. AIX version.
+ Copyright (C) 1991,1992,1994,1996,1997,2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SIGSET_H_types
+# define _SIGSET_H_types 1
+
+typedef int __sig_atomic_t;
+
+/* A `sigset_t' has a bit for each signal. */
+
+typedef struct
+ {
+ unsigned int __losigs;
+ unsigned int __hisigs;
+ } __sigset_t;
+
+#endif
+
+
+/* We only want to define these functions if <signal.h> was actually
+ included; otherwise we were included just to define the types. Since we
+ are namespace-clean, it wouldn't hurt to define extra macros. But
+ trouble can be caused by functions being defined (e.g., any global
+ register vars declared later will cause compilation errors). */
+
+#if !defined _SIGSET_H_fns && defined _SIGNAL_H
+# define _SIGSET_H_fns 1
+
+# ifndef _EXTERN_INLINE
+# define _EXTERN_INLINE extern __inline
+# endif
+
+/* Return a mask that includes the bit for SIG only. */
+# define __sigmask(sig) \
+ (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned int))))
+
+# if defined __GNUC__ && __GNUC__ >= 2
+# define __sigemptyset(set) \
+ (__extension__ ({ sigset_t *__set = (set); \
+ __set->__losigs = __set->__hisigs = 0; \
+ 0; }))
+# define __sigfillset(set) \
+ (__extension__ ({ sigset_t *__set = (set); \
+ __set->__losigs = __set->__hisigs = ~0u; \
+ 0; }))
+
+# ifdef __USE_GNU
+/* The POSIX does not specify for handling the whole signal set in one
+ command. This is often wanted and so we define three more functions
+ here. */
+# define __sigisemptyset(set) \
+ (__extension__ ({ const sigset_t *__set = (set); \
+ (__set->__losigs | __set->__hisigs) == 0; }))
+# define __sigandset(dest, left, right) \
+ (__extension__ ({ sigset_t *__dest = (dest); \
+ const sigset_t *__left = (left); \
+ const sigset_t *__right = (right); \
+ __dest->__losigs = __left->__losigs & __right->__losigs; \
+ __dest->__hisigs = __left->__hisigs & __right->__hisigs; \
+ 0; }))
+# define __sigorset(dest, left, right) \
+ (__extension__ ({ sigset_t *__dest = (dest); \
+ const sigset_t *__left = (left); \
+ const sigset_t *__right = (right); \
+ __dest->__losigs = __left->__losigs | __right->__losigs; \
+ __dest->__hisigs = __left->__hisigs | __right->__hisigs; \
+ 0; }))
+# endif
+# endif
+
+/* These functions needn't check for a bogus signal number -- error
+ checking is done in the non __ versions. */
+
+extern int __sigismember (__const __sigset_t *, int);
+extern int __sigaddset (__sigset_t *, int);
+extern int __sigdelset (__sigset_t *, int);
+
+# ifdef __USE_EXTERN_INLINES
+_EXTERN_INLINE int
+__sigismember (__const __sigset_t *__set, int __sig)
+{
+ unsigned int __mask = __sigmask (__sig);
+
+ return ((__sig < 33 ? __set->__losigs : __set->__hisigs) & __mask ) ? 1 : 0;
+}
+
+_EXTERN_INLINE int
+__sigaddset (__sigset_t *__set, int __sig)
+{
+ unsigned int __mask = __sigmask (__sig);
+
+ (__sig < 33 ? __set->__losigs : __set->__hisigs) |= __mask;
+
+ return 0;
+}
+
+_EXTERN_INLINE int
+__sigdelset (__sigset_t *__set, int __sig)
+{
+ unsigned int __mask = __sigmask (__sig);
+
+ (__sig < 33 ? __set->__losigs : __set->__hisigs) &= ~__mask;
+
+ return 0;
+}
+# endif
+
+
+#endif /* ! _SIGSET_H_fns. */
diff --git a/ports/sysdeps/unix/sysv/aix/bits/sigstack.h b/ports/sysdeps/unix/sysv/aix/bits/sigstack.h
new file mode 100644
index 000000000..cefd33c23
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/sigstack.h
@@ -0,0 +1,46 @@
+/* sigstack, sigaltstack definitions.
+ Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SIGNAL_H
+# error "Never include this file directly. Use <signal.h> instead"
+#endif
+
+
+/* Structure describing a signal stack (obsolete). */
+struct sigstack
+ {
+ void *ss_sp; /* Signal stack pointer. */
+ int ss_onstack; /* Nonzero if executing on this stack. */
+ };
+
+
+/* Possible values for `ss_flags.'. */
+enum
+{
+ SS_ONSTACK = 1,
+#define SS_ONSTACK SS_ONSTACK
+ SS_DISABLE
+#define SS_DISABLE SS_DISABLE
+};
+
+/* Minimum stack size for a signal handler. */
+#define MINSIGSTKSZ 1024
+
+/* System default stack size. */
+#define SIGSTKSZ 4096
diff --git a/ports/sysdeps/unix/sysv/aix/bits/socket.h b/ports/sysdeps/unix/sysv/aix/bits/socket.h
new file mode 100644
index 000000000..1fdadfe08
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/socket.h
@@ -0,0 +1,293 @@
+/* System-specific socket constants and types. AIX version.
+ Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef __BITS_SOCKET_H
+#define __BITS_SOCKET_H
+
+#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H
+# error "Never include <bits/socket.h> directly; use <sys/socket.h> instead."
+#endif
+
+#define __need_size_t
+#define __need_NULL
+#include <stddef.h>
+
+#include <limits.h>
+#include <sys/types.h>
+
+/* Type for length arguments in socket calls. */
+#ifndef __socklen_t_defined
+typedef __socklen_t socklen_t;
+# define __socklen_t_defined
+#endif
+
+/* Types of sockets. */
+enum __socket_type
+{
+ SOCK_STREAM = 1, /* Sequenced, reliable, connection-based
+ byte streams. */
+#define SOCK_STREAM SOCK_STREAM
+ SOCK_DGRAM = 2, /* Connectionless, unreliable datagrams
+ of fixed maximum length. */
+#define SOCK_DGRAM SOCK_DGRAM
+ SOCK_RAW = 3, /* Raw protocol interface. */
+#define SOCK_RAW SOCK_RAW
+ SOCK_RDM = 4, /* Reliably-delivered messages. */
+#define SOCK_RDM SOCK_RDM
+ SOCK_SEQPACKET = 5, /* Sequenced, reliable, connection-based,
+ datagrams of fixed maximum length. */
+#define SOCK_SEQPACKET SOCK_SEQPACKET
+ SOCK_CONN_DGRAM = 6 /* Conneciton datagram. */
+#define SOCK_CONN_DGRAM SOCK_CONN_DGRAM
+};
+
+/* Protocol families. */
+#define PF_UNSPEC 0 /* Unspecified. */
+#define PF_LOCAL 1 /* Local to host (pipes and file-domain). */
+#define PF_UNIX PF_LOCAL /* Old BSD name for PF_LOCAL. */
+#define PF_FILE PF_LOCAL /* Another non-standard name for PF_LOCAL. */
+#define PF_INET 2 /* IP protocol family. */
+#define PF_IMPLINK 3 /* ARPAnet IMP addresses. */
+#define PF_PUP 4 /* PUP protocols (e.g., BSP). */
+#define PF_CHAOS 5 /* MIT CHAOS protocols. */
+#define PF_NS 6 /* XEROX NS protocols. */
+#define PF_ISO 7 /* ISO protocols. */
+#define PF_OSI PF_ISO
+#define PF_ECMA 8 /* European Computer Manufacturers. */
+#define PF_DATAKIT 9 /* Datakit protocols. */
+#define PF_CCITT 10 /* CCITT protocols, X.25 etc. */
+#define PF_SNA 11 /* IBM SNA. */
+#define PF_DECnet 12 /* DECnet. */
+#define PF_DLI 13 /* DEC Direct data link interface. */
+#define PF_LAT 14 /* LAT. */
+#define PF_HYLINK 15 /* NSC Hyperchannel. */
+#define PF_APPLETALK 16 /* Apple Talk. */
+#define PF_NETLINK 17 /* Internet Routing Protocol. */
+#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */
+#define PF_LINK 18 /* Link layer interface. */
+#define PF_XTP 19 /* eXpress Transfer Protocol (no AF). */
+#define PF_INTF 20 /* Debugging use only. */
+#define PF_RIF 21 /* Raw interface. */
+#define PF_NETWARE 22
+#define PF_NDD 23
+#define PF_INET6 24 /* IPv6. */
+#define PF_MAX 30 /* For now.. */
+
+/* Address families. */
+#define AF_UNSPEC PF_UNSPEC
+#define AF_LOCAL PF_LOCAL
+#define AF_UNIX PF_UNIX
+#define AF_FILE PF_FILE
+#define AF_INET PF_INET
+#define AF_IMPLINK PF_IMPLINK
+#define AF_PUP PF_PUP
+#define AF_CHAOS PF_CHAOS
+#define AF_NS PF_NS
+#define AF_ISO PF_ISO
+#define AF_OSI PF_OSI
+#define AF_ECMA PF_ECMA
+#define AF_DATAKIT PF_DATAKIT
+#define AF_CCITT PF_CCITT
+#define AF_SNA PF_SNA
+#define AF_DECnet PF_DECnet
+#define AF_DLI PF_DLI
+#define AF_LAT PF_LAT
+#define AF_HYLINK PF_HYLINK
+#define AF_APPLETALK PF_APPLETALK
+#define AF_NETLINK PF_NETLINK
+#define AF_ROUTE PF_ROUTE
+#define AF_LINK PF_LINK
+#define AF_INTF PF_INTF
+#define AF_RIF PF_RIF
+#define AF_NETWARE PF_NETWARE
+#define AF_NDD PF_NDD
+#define AF_INET6 PF_INET6
+#define AF_MAX PF_MAX
+
+/* Socket level values. Others are defined in the appropriate headers.
+
+ XXX These definitions also should go into the appropriate headers as
+ far as they are available. */
+#define SOL_SOCKET 0xffff
+
+/* Maximum queue length specifiable by listen. */
+#define SOMAXCONN 1024
+
+/* Get the definition of the macro to define the common sockaddr members. */
+#include <bits/sockaddr.h>
+
+/* Structure describing a generic socket address. */
+struct sockaddr
+ {
+ __SOCKADDR_COMMON (sa_); /* Common data: address family and length. */
+ char sa_data[14]; /* Address data. */
+ };
+
+
+/* Structure large enough to hold any socket address (with the historical
+ exception of AF_UNIX). We reserve 128 bytes. */
+#if ULONG_MAX > 0xffffffff
+# define __ss_aligntype __uint64_t
+#else
+# define __ss_aligntype __uint32_t
+#endif
+#define _SS_SIZE 128
+#define _SS_PADSIZE (_SS_SIZE - (2 * sizeof (__ss_aligntype)))
+
+struct sockaddr_storage
+ {
+ __SOCKADDR_COMMON (ss_); /* Address family, etc. */
+ __ss_aligntype __ss_align; /* Force desired alignment. */
+ char __ss_padding[_SS_PADSIZE];
+ };
+
+
+/* Bits in the FLAGS argument to `send', `recv', et al. */
+enum
+ {
+ MSG_OOB = 0x01, /* Process out-of-band data. */
+#define MSG_OOB MSG_OOB
+ MSG_PEEK = 0x02, /* Peek at incoming messages. */
+#define MSG_PEEK MSG_PEEK
+ MSG_DONTROUTE = 0x04, /* Don't use local routing. */
+#define MSG_DONTROUTE MSG_DONTROUTE
+ MSG_EOR = 0x08, /* End of record. */
+#define MSG_EOR MSG_EOR
+ MSG_TRUNC = 0x10,
+#define MSG_TRUNC MSG_TRUNC
+ MSG_CTRUNC = 0x20, /* Control data lost before delivery. */
+#define MSG_CTRUNC MSG_CTRUNC
+ MSG_WAITALL = 0x40, /* Wait for a full request. */
+#define MSG_WAITALL MSG_WAITALL
+ MSG_MPEG2 = 0x80, /* Message contain MPEG2 data. */
+#define MSG_MPEG2 MSG_MPEG2
+ };
+
+
+/* Structure describing messages sent by
+ `sendmsg' and received by `recvmsg'. */
+struct msghdr
+ {
+ void *msg_name; /* Address to send to/receive from. */
+ socklen_t msg_namelen; /* Length of address data. */
+
+ struct iovec *msg_iov; /* Vector of data to send/receive into. */
+ int msg_iovlen; /* Number of elements in the vector. */
+
+ void *msg_control; /* Ancillary data (eg BSD filedesc passing). */
+ socklen_t msg_controllen; /* Ancillary data buffer length. */
+
+ int msg_flags; /* Flags on received message. */
+ };
+
+/* Structure used for storage of ancillary data object information. */
+struct cmsghdr
+ {
+ socklen_t cmsg_len; /* Length of data in cmsg_data plus length
+ of cmsghdr structure. */
+ int cmsg_level; /* Originating protocol. */
+ int cmsg_type; /* Protocol specific type. */
+#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
+ __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data. */
+#endif
+ };
+
+/* Ancillary data object manipulation macros. */
+#if (!defined __STRICT_ANSI__ && __GNUC__ >= 2) || __STDC_VERSION__ >= 199901L
+# define CMSG_DATA(cmsg) ((cmsg)->__cmsg_data)
+#else
+# define CMSG_DATA(cmsg) ((unsigned char *) ((struct cmsghdr *) (cmsg) + 1))
+#endif
+#define CMSG_NXTHDR(mhdr, cmsg) __cmsg_nxthdr (mhdr, cmsg)
+#define CMSG_FIRSTHDR(mhdr) \
+ ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) \
+ ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) NULL)
+#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \
+ & ~(sizeof (size_t) - 1))
+#define CMSG_SPACE(len) (CMSG_ALIGN (len) \
+ + CMSG_ALIGN (sizeof (struct cmsghdr)))
+#define CMSG_LEN(len) (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
+
+extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr,
+ struct cmsghdr *__cmsg) __THROW;
+#ifdef __USE_EXTERN_INLINES
+# ifndef _EXTERN_INLINE
+# define _EXTERN_INLINE extern __inline
+# endif
+_EXTERN_INLINE struct cmsghdr *
+__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg) __THROW
+{
+ if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr))
+ /* The kernel header does this so there may be a reason. */
+ return 0;
+
+ __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg
+ + CMSG_ALIGN (__cmsg->cmsg_len));
+ if ((unsigned char *) (__cmsg + 1) >= ((unsigned char *) __mhdr->msg_control
+ + __mhdr->msg_controllen)
+ || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len)
+ > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen)))
+ /* No more entries. */
+ return 0;
+ return __cmsg;
+}
+#endif /* Use `extern inline'. */
+
+/* Socket level message types. This must match the definitions in
+ <linux/socket.h>. */
+enum
+ {
+ SCM_RIGHTS = 0x01 /* Transfer file descriptors. */
+#define SCM_RIGHTS SCM_RIGHTS
+ };
+
+/* Options flags per socket. */
+#define SO_DEBUG 0x0001 /* Turn on debugging info recording. */
+#define SO_ACCEPTCONN 0x0002 /* Socket has had listen(). */
+#define SO_REUSEADDR 0x0004 /* Allow local address reuse. */
+#define SO_KEEPALIVE 0x0008 /* Keep connections alive. */
+#define SO_DONTROUTE 0x0010 /* Just use interface addresses. */
+#define SO_BROADCAST 0x0020 /* Permit sending of broadcast msgs. */
+#define SO_USELOOPBACK 0x0040 /* Bypass hardware when possible. */
+#define SO_LINGER 0x0080 /* Linger on close if data present. */
+#define SO_OOBINLINE 0x0100 /* Leave received OOB data in line. */
+#define SO_REUSEPORT 0x0200 /* Allow local address & port reuse. */
+#define SO_USE_IFBUFS 0x0400 /* Interface will supply buffers. */
+#define SO_CKSUMRECV 0x0800 /* Defer checksum until receive. */
+#define SO_NOREUSEADDR 0x1000 /* Prevent local address reuse. */
+#define SO_SNDBUF 0x1001 /* Send buffer size. */
+#define SO_RCVBUF 0x1002 /* Receive buffer size. */
+#define SO_SNDLOWAT 0x1003 /* Send low-water mark. */
+#define SO_RCVLOWAT 0x1004 /* Receive low-water mark. */
+#define SO_SNDTIMEO 0x1005 /* Send timeout. */
+#define SO_RCVTIMEO 0x1006 /* Receive timeout. */
+#define SO_ERROR 0x1007 /* Get error status and clear. */
+#define SO_TYPE 0x1008 /* Get socket type. */
+#define SO_KERNACCEPT 0x2000 /* Derive a in-kernel only socket. */
+#define SO_AUDIT 0x8000 /* Turn on socket auditing. */
+
+
+/* Structure used to manipulate the SO_LINGER option. */
+struct linger
+ {
+ int l_onoff; /* Nonzero to linger on close. */
+ int l_linger; /* Time to linger. */
+ };
+
+#endif /* bits/socket.h */
diff --git a/ports/sysdeps/unix/sysv/aix/bits/stat.h b/ports/sysdeps/unix/sysv/aix/bits/stat.h
new file mode 100644
index 000000000..adcb1d101
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/stat.h
@@ -0,0 +1,119 @@
+/* Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_STAT_H
+# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+#endif
+
+struct stat
+ {
+ __dev_t st_dev; /* Device. */
+ __ino_t st_ino; /* File serial number. */
+ __mode_t st_mode; /* File mode. */
+ __nlink_t st_nlink; /* Link count. */
+ unsigned short int st_flag; /* Flag word. */
+ __uid_t st_uid; /* User ID of the file's owner. */
+ __gid_t st_gid; /* Group ID of the file's group.*/
+ __dev_t st_rdev; /* Device number, if device. */
+#ifndef __USE_FILE_OFFSET64
+ __off_t st_size; /* Size of file, in bytes. */
+#else
+ int st_ssize; /* Size of file, in bytes. */
+#endif
+ __time_t st_atime; /* Time of last access. */
+ unsigned long int __unused1;
+ __time_t st_mtime; /* Time of last modification. */
+ unsigned long int __unused2;
+ __time_t st_ctime; /* Time of last status change. */
+ unsigned long int __unused3;
+ __blksize_t st_blksize; /* Optimal block size for I/O. */
+ __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
+ int st_vfstype; /* Type of the filesystem. */
+ unsigned int st_vfs; /* Vfs number. */
+ unsigned int st_type; /* Vnode type. */
+ unsigned int st_gen; /* Inode generation number. */
+
+#define _STATBUF_RESERVED_SPACE 9
+ unsigned int st_reserved[_STATBUF_RESERVED_SPACE];
+
+#ifdef __USE_FILE_OFFSET64
+ unsigned int st_padto_ll;
+ __off64_t st_size; /* 64 bit file size in bytes. */
+#endif
+ };
+
+#ifdef __USE_LARGEFILE64
+struct stat64
+ {
+ __dev_t st_dev; /* Device. */
+ __ino_t st_ino; /* File serial number. */
+ __mode_t st_mode; /* File mode. */
+ __nlink_t st_nlink; /* Link count. */
+ unsigned short int st_flag; /* Flag word. */
+ __uid_t st_uid; /* User ID of the file's owner. */
+ __gid_t st_gid; /* Group ID of the file's group.*/
+ __dev_t st_rdev; /* Device number, if device. */
+ int st_ssize; /* Size of file, in bytes. */
+ __time_t st_atime; /* Time of last access. */
+ unsigned long int __unused1;
+ __time_t st_mtime; /* Time of last modification. */
+ unsigned long int __unused2;
+ __time_t st_ctime; /* Time of last status change. */
+ unsigned long int __unused3;
+ __blksize_t st_blksize; /* Optimal block size for I/O. */
+ __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */
+ int st_vfstype; /* Type of the filesystem. */
+ unsigned int st_vfs; /* Vfs number. */
+ unsigned int st_type; /* Vnode type. */
+ unsigned int st_gen; /* Inode generation number. */
+ unsigned int st_reserved[_STATBUF_RESERVED_SPACE];
+ unsigned int st_padto_ll;
+ __off64_t st_size; /* 64 bit file size in bytes. */
+ };
+#endif
+
+/* Tell code we have these members. */
+#define _STATBUF_ST_BLKSIZE
+#define _STATBUF_ST_RDEV
+
+/* Encoding of the file mode. */
+
+#define __S_IFMT 0170000 /* These bits determine file type. */
+
+/* File types. */
+#define __S_IFDIR 0040000 /* Directory. */
+#define __S_IFCHR 0020000 /* Character device. */
+#define __S_IFBLK 0060000 /* Block device. */
+#define __S_IFREG 0100000 /* Regular file. */
+#define __S_IFIFO 0010000 /* FIFO. */
+#define __S_IFLNK 0120000 /* Symbolic link. */
+#define __S_IFSOCK 0140000 /* Socket. */
+
+/* POSIX.1b objects. */
+#define __S_TYPEISMQ(buf) (0)
+#define __S_TYPEISSEM(buf) (0)
+#define __S_TYPEISSHM(buf) (0)
+
+/* Protection bits. */
+
+#define __S_ISUID 04000 /* Set user ID on execution. */
+#define __S_ISGID 02000 /* Set group ID on execution. */
+#define __S_ISVTX 01000 /* Save swapped text after use (sticky). */
+#define __S_IREAD 0400 /* Read by owner. */
+#define __S_IWRITE 0200 /* Write by owner. */
+#define __S_IEXEC 0100 /* Execute by owner. */
diff --git a/ports/sysdeps/unix/sysv/aix/bits/statfs.h b/ports/sysdeps/unix/sysv/aix/bits/statfs.h
new file mode 100644
index 000000000..0a1c0a5e6
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/statfs.h
@@ -0,0 +1,77 @@
+/* Copyright (C) 1997, 1998, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_STATFS_H
+# error "Never include <bits/statfs.h> directly; use <sys/statfs.h> instead."
+#endif
+
+#include <bits/types.h> /* for __fsid_t and __fsblkcnt_t*/
+
+struct statfs
+ {
+ int f_version;
+ int f_type;
+ int f_bsize;
+ /* The following five elements have type `int' since AIX's fsfilcnt_t
+ and fsblkcnt_t types do not fit. */
+ int f_blocks;
+ int f_bfree;
+ int f_bavail;
+ int f_files;
+ int f_ffree;
+ __fsid_t f_fsid;
+ int f_vfstype;
+ int f_fsize;
+ int f_vfsnumber;
+ int f_vfsoff;
+ int f_vfslen;
+ int f_vfsvers;
+ char f_fname[32];
+ char f_fpack[32];
+ int f_name_max;
+ };
+
+#ifdef __USE_LARGEFILE64
+/* XXX There seems to be no 64-bit versio of this structure. */
+struct statfs64
+ {
+ int f_version;
+ int f_type;
+ int f_bsize;
+ /* The following five elements have type `int' since AIX's fsfilcnt_t
+ and fsblkcnt_t types do not fit. */
+ int f_blocks;
+ int f_bfree;
+ int f_bavail;
+ int f_files;
+ int f_ffree;
+ __fsid_t f_fsid;
+ int f_vfstype;
+ int f_fsize;
+ int f_vfsnumber;
+ int f_vfsoff;
+ int f_vfslen;
+ int f_vfsvers;
+ char f_fname[32];
+ char f_fpack[32];
+ int f_name_max;
+ };
+#endif
+
+/* Tell code we have these members. */
+#define _STATFS_F_NAME_MAX
diff --git a/ports/sysdeps/unix/sysv/aix/bits/termios.h b/ports/sysdeps/unix/sysv/aix/bits/termios.h
new file mode 100644
index 000000000..b178d9c1b
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/termios.h
@@ -0,0 +1,189 @@
+/* termios type and macro definitions. AIX version.
+ Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _TERMIOS_H
+# error "Never include <bits/termios.h> directly; use <termios.h> instead."
+#endif
+
+typedef unsigned char cc_t;
+typedef unsigned int speed_t;
+typedef unsigned int tcflag_t;
+
+#define NCCS 16
+struct termios
+ {
+ tcflag_t c_iflag; /* input mode flags */
+ tcflag_t c_oflag; /* output mode flags */
+ tcflag_t c_cflag; /* control mode flags */
+ tcflag_t c_lflag; /* local mode flags */
+ cc_t c_cc[NCCS]; /* control characters */
+ };
+
+/* c_cc characters */
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VEOF 4
+#define VEOL 5
+#define VSTART 7
+#define VSTOP 8
+#define VSUSP 9
+#define VMIN 4
+#define VTIME 5
+#define VEOL2 6
+#define VDSUSP 10
+#define VREPRINT 11
+#define VDISCARD 12
+#define VWERSE 13
+#define VWERASE VWERSE
+#define VLNEXT 14
+#define VSTRT VSTART
+
+/* c_iflag bits */
+#define IGNBRK 0000001
+#define BRKINT 0000002
+#define IGNPAR 0000004
+#define PARMRK 0000010
+#define INPCK 0000020
+#define ISTRIP 0000040
+#define INLCR 0000100
+#define IGNCR 0000200
+#define ICRNL 0000400
+#define IXON 0001000
+#define IXOFF 0002000
+#define IUCLC 0004000
+#define IXANY 0010000
+#define IMAXBEL 0200000
+
+/* c_oflag bits */
+#define OPOST 0000001
+#define OLCUC 0000002
+#define ONLCR 0000004
+#define OCRNL 0000010
+#define ONOCR 0000020
+#define ONLRET 0000040
+#define OFILL 0000100
+#define OFDEL 0000200
+#if defined __USE_MISC || defined __USE_XOPEN
+# define CRDLY 0001400
+# define CR0 0000000
+# define CR1 0000400
+# define CR2 0001000
+# define CR3 0001400
+# define TABDLY 0006000
+# define TAB0 0000000
+# define TAB1 0002000
+# define TAB2 0004000
+# define TAB3 0006000
+# define BSDLY 0010000
+# define BS0 0000000
+# define BS1 0010000
+# define FFDLY 0020000
+# define FF0 0000000
+# define FF1 0020000
+# define NLDLY 0040000
+# define NL0 0000000
+# define NL1 0040000
+#endif
+
+#define VTDLY 0100000
+#define VT0 0000000
+#define VT1 0100000
+
+/* c_cflag bit meaning */
+#ifdef __USE_MISC
+# define CBAUD 0000017
+#endif
+#define B0 0000000 /* hang up */
+#define B50 0000001
+#define B75 0000002
+#define B110 0000003
+#define B134 0000004
+#define B150 0000005
+#define B200 0000006
+#define B300 0000007
+#define B600 0000010
+#define B1200 0000011
+#define B1800 0000012
+#define B2400 0000013
+#define B4800 0000014
+#define B9600 0000015
+#define B19200 0000016
+#define B38400 0000017
+#ifdef __USE_MISC
+# define EXTA B19200
+# define EXTB B38400
+#endif
+#define CSIZE 0000060
+#define CS5 0000000
+#define CS6 0000020
+#define CS7 0000040
+#define CS8 0000060
+#define CSTOPB 0000100
+#define CREAD 0000200
+#define PARENB 0000400
+#define PARODD 0001000
+#define HUPCL 0002000
+#define CLOCAL 0004000
+#ifdef __USE_MISC
+# define CIBAUD 000003600000 /* input baud rate (not used) */
+# define CRTSCTS 020000000000 /* flow control */
+#endif
+
+/* c_lflag bits */
+#define ISIG 0000001
+#define ICANON 0000002
+#if defined __USE_MISC || defined __USE_XOPEN
+# define XCASE 0000004
+#endif
+#define ECHO 0000010
+#define ECHOE 0000020
+#define ECHOK 0000040
+#define ECHONL 0000100
+#define NOFLSH 0000200
+#define TOSTOP 0200000
+#ifdef __USE_MISC
+# define ECHOCTL 0400000
+# define ECHOPRT 01000000
+# define ECHOKE 02000000
+# define FLUSHO 004000000
+# define PENDIN 04000000000
+#endif
+#define IEXTEN 010000000
+
+/* tcflow() and TCXONC use these */
+#define TCOOFF 0
+#define TCOON 1
+#define TCIOFF 2
+#define TCION 3
+
+/* tcflush() and TCFLSH use these */
+#define TCIFLUSH 0
+#define TCOFLUSH 1
+#define TCIOFLUSH 2
+
+/* tcsetattr uses these */
+#define TCSANOW 0
+#define TCSADRAIN 1
+#define TCSAFLUSH 2
+
+
+#define _IOT_termios /* Hurd ioctl type field. */ \
+ _IOT (_IOTS (cflag_t), 4, _IOTS (cc_t), NCCS, _IOTS (speed_t), 2)
diff --git a/ports/sysdeps/unix/sysv/aix/bits/types.h b/ports/sysdeps/unix/sysv/aix/bits/types.h
new file mode 100644
index 000000000..12c3be730
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/types.h
@@ -0,0 +1,136 @@
+/* Copyright (C) 1991,92,1994-1999,2000,2001 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+/*
+ * Never include this file directly; use <sys/types.h> instead.
+ */
+
+#ifndef _BITS_TYPES_H
+#define _BITS_TYPES_H 1
+
+#include <features.h>
+
+#define __need_NULL
+#define __need_size_t
+#include <stddef.h>
+
+/* Convenience types. */
+typedef unsigned char __u_char;
+typedef unsigned short __u_short;
+typedef unsigned int __u_int;
+typedef unsigned long __u_long;
+#ifdef __GNUC__
+__extension__ typedef unsigned long long int __u_quad_t;
+__extension__ typedef long long int __quad_t;
+#else
+typedef struct
+ {
+ long int __val[2];
+ } __quad_t;
+typedef struct
+ {
+ __u_long __val[2];
+ } __u_quad_t;
+#endif
+typedef signed char __int8_t;
+typedef unsigned char __uint8_t;
+typedef signed short int __int16_t;
+typedef unsigned short int __uint16_t;
+typedef signed int __int32_t;
+typedef unsigned int __uint32_t;
+#ifdef __GNUC__
+__extension__ typedef signed long long int __int64_t;
+__extension__ typedef unsigned long long int __uint64_t;
+#endif
+typedef __quad_t *__qaddr_t;
+
+typedef __u_long __dev_t; /* Type of device numbers. */
+typedef __u_int __uid_t; /* Type of user identifications. */
+typedef __u_int __gid_t; /* Type of group identifications. */
+typedef __u_long __ino_t; /* Type of file serial numbers. */
+typedef __u_int __mode_t; /* Type of file attribute bitmasks. */
+typedef short int __nlink_t; /* Type of file link counts. */
+typedef long int __off_t; /* Type of file sizes and offsets. */
+typedef __quad_t __loff_t; /* Type of file sizes and offsets. */
+typedef int __pid_t; /* Type of process identifications. */
+typedef long int __ssize_t; /* Type of a byte count, or error. */
+typedef __u_long __rlim_t; /* Type of resource counts. */
+typedef __u_quad_t __rlim64_t; /* Type of resource counts (LFS). */
+typedef unsigned int __id_t; /* General type for ID. */
+
+typedef struct
+ {
+ unsigned long int __val[2];
+ } __fsid_t; /* Type of file system IDs. */
+
+/* Everythin' else. */
+typedef long int __daddr_t; /* The type of a disk address. */
+typedef char *__caddr_t;
+typedef long int __time_t;
+typedef unsigned int __useconds_t;
+typedef int __suseconds_t;
+typedef long int __swblk_t; /* Type of a swap block maybe? */
+
+typedef int __clock_t;
+
+/* Clock ID used in clock and timer functions. */
+typedef int __clockid_t;
+
+/* Timer ID returned by `timer_create'. */
+typedef int __timer_t;
+
+/* Number of descriptors that can fit in an `fd_set'. */
+#define __FD_SETSIZE 1024
+
+
+typedef long int __key_t;
+
+/* Type to represent block size. */
+typedef int __blksize_t;
+
+/* Types from the Large File Support interface. */
+
+/* Type to count number os disk blocks. */
+typedef int __blkcnt_t;
+typedef __quad_t __blkcnt64_t;
+
+/* Type to count file system blocks. */
+typedef __u_long __fsblkcnt_t;
+typedef __u_quad_t __fsblkcnt64_t;
+
+/* Type to count file system inodes. */
+typedef __u_long __fsfilcnt_t;
+typedef __u_quad_t __fsfilcnt64_t;
+
+/* Type of file serial numbers. */
+typedef __u_quad_t __ino64_t;
+
+/* Type of file sizes and offsets. */
+typedef __loff_t __off64_t;
+
+/* Used in XTI. */
+typedef int __t_scalar_t;
+typedef unsigned int __t_uscalar_t;
+
+/* Duplicates info from stdint.h but this is used in unistd.h. */
+typedef signed long __intptr_t;
+
+/* Duplicate info from sys/socket.h. */
+typedef unsigned int __socklen_t;
+
+#endif /* bits/types.h */
diff --git a/ports/sysdeps/unix/sysv/aix/bits/uio.h b/ports/sysdeps/unix/sysv/aix/bits/uio.h
new file mode 100644
index 000000000..60781532a
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/uio.h
@@ -0,0 +1,42 @@
+/* Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_UIO_H
+# error "Never include <bits/uio.h> directly; use <sys/uio.h> instead."
+#endif
+
+
+#include <sys/types.h>
+
+
+/* Size of object which can be written atomically.
+
+ This macro has different values in different kernel versions. The
+ latest versions of ther kernel use 1024 and this is good choice. Since
+ the C library implementation of readv/writev is able to emulate the
+ functionality even if the currently running kernel does not support
+ this large value the readv/writev call will not fail because of this. */
+#define UIO_MAXIOV 16
+
+
+/* Structure for scatter/gather I/O. */
+struct iovec
+ {
+ void *iov_base; /* Pointer to data. */
+ size_t iov_len; /* Length of data. */
+ };
diff --git a/ports/sysdeps/unix/sysv/aix/bits/utmp.h b/ports/sysdeps/unix/sysv/aix/bits/utmp.h
new file mode 100644
index 000000000..b78a2afda
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/utmp.h
@@ -0,0 +1,73 @@
+/* The `struct utmp' type, describing entries in the utmp file. AIX.
+ Copyright (C) 1996, 1997, 1999, 2000 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _UTMP_H
+# error "Never include <bits/utmp.h> directly; use <utmp.h> instead."
+#endif
+
+#include <paths.h>
+#include <sys/time.h>
+#include <sys/types.h>
+
+
+#define UT_LINESIZE 12
+#define UT_NAMESIZE 8
+#define UT_HOSTSIZE 16
+
+
+struct utmp
+ {
+#define ut_name ut_user
+ char ut_user[UT_NAMESIZE];
+ char ut_id[14];
+ char ut_line[UT_LINESIZE];
+ short int ut_type;
+ short int ut_pid;
+ struct exit_status
+ {
+ short int e_termination;
+ short int e_exit;
+ } ut_exit;
+ __time_t ut_time;
+ char ut_host[UT_HOSTSIZE];
+ };
+
+
+/* Values for the `ut_type' field of a `struct utmp'. */
+#define EMPTY 0 /* No valid user accounting information. */
+
+#define RUN_LVL 1 /* The system's runlevel. */
+#define BOOT_TIME 2 /* Time of system boot. */
+#define OLD_TIME 3 /* Time when system clock changed. */
+#define NEW_TIME 4 /* Time after system clock changed. */
+
+#define INIT_PROCESS 5 /* Process spawned by the init process. */
+#define LOGIN_PROCESS 6 /* Session leader of a logged in user. */
+#define USER_PROCESS 7 /* Normal process. */
+#define DEAD_PROCESS 8 /* Terminated process. */
+
+#define ACCOUNTING 9
+
+
+/* Tell the user that we have a modern system with UT_HOST, UT_TYPE, and
+ UT_ID fields. */
+#define _HAVE_UT_TYPE 1
+#define _HAVE_UT_PID 1
+#define _HAVE_UT_ID 1
+#define _HAVE_UT_HOST 1
diff --git a/ports/sysdeps/unix/sysv/aix/bits/utmpx.h b/ports/sysdeps/unix/sysv/aix/bits/utmpx.h
new file mode 100644
index 000000000..438b5f3a5
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/utmpx.h
@@ -0,0 +1,75 @@
+/* Structures and defenitions for the user accounting database. AIX.
+ Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _UTMPX_H
+# error "Never include <bits/utmpx.h> directly; use <utmpx.h> instead."
+#endif
+
+#include <bits/types.h>
+#include <sys/time.h>
+
+
+#ifdef __USE_GNU
+# include <paths.h>
+# define _PATH_UTMPX _PATH_UTMP
+# define _PATH_WTMPX _PATH_WTMP
+#endif
+
+
+#define __UT_LINESIZE 12
+#define __UT_NAMESIZE 8
+#define __UT_HOSTSIZE 16
+
+
+/* The structure describing an entry in the user accounting database. */
+struct utmpx
+{
+ char ut_user[__UT_NAMESIZE]; /* Username. */
+ char ut_id[14]; /* Inittab ID. */
+ char ut_line[__UT_LINESIZE]; /* Devicename. */
+ short int ut_type; /* Type of login. */
+ __pid_t ut_pid; /* Process ID of login process. */
+ struct timeval ut_tv; /* Time entry was made. */
+ char ut_host[__UT_HOSTSIZE]; /* Hostname for remote login. */
+};
+
+
+/* Values for the `ut_type' field of a `struct utmpx'. */
+#define EMPTY 0 /* No valid user accounting information. */
+
+#define RUN_LVL 1 /* The system's runlevel. */
+#define BOOT_TIME 2 /* Time of system boot. */
+#define NEW_TIME 3 /* Time after system clock changed. */
+#define OLD_TIME 4 /* Time when system clock changed. */
+
+#define INIT_PROCESS 5 /* Process spawned by the init process. */
+#define LOGIN_PROCESS 6 /* Session leader of a logged in user. */
+#define USER_PROCESS 7 /* Normal process. */
+#define DEAD_PROCESS 8 /* Terminated process. */
+
+#ifdef __USE_GNU
+# define ACCOUNTING 9 /* System accounting. */
+#endif
+
+#define _HAVE_UT_TYPE 1
+#define _HAVE_UT_PID 1
+#define _HAVE_UT_ID 1
+#define _HAVE_UT_TV 1
+#define _HAVE_UT_HOST 1
+
diff --git a/ports/sysdeps/unix/sysv/aix/bits/utsname.h b/ports/sysdeps/unix/sysv/aix/bits/utsname.h
new file mode 100644
index 000000000..d238f5efd
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/aix/bits/utsname.h
@@ -0,0 +1,23 @@
+/* Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library 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 GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_UTSNAME_H
+# error "Never include <bits/utsname.h> directly; use <sys/utsname.h> instead."
+#endif
+
+#define _UTSNAME_LENGTH 32