diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-03-21 01:29:48 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-03-21 01:29:48 +0000 |
commit | 7e836977ea1ccf19880978549590125832226525 (patch) | |
tree | da1be89473bffb9b69226b716332233d31733933 /sysdeps/unix/sysv/aix/bits | |
parent | db8409143eb9aee94e436d22d4c9260d8840b337 (diff) | |
download | glibc-7e836977ea1ccf19880978549590125832226525.tar glibc-7e836977ea1ccf19880978549590125832226525.tar.gz glibc-7e836977ea1ccf19880978549590125832226525.tar.bz2 glibc-7e836977ea1ccf19880978549590125832226525.zip |
Update.
2000-03-20 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/aix/*: Add initial code for port to AIX 4.3.
Diffstat (limited to 'sysdeps/unix/sysv/aix/bits')
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/dirent.h | 55 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/dlfcn.h | 47 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/endian.h | 23 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/errno.h | 155 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/fcntl.h | 137 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/resource.h | 191 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/setjmp.h | 46 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/sigaction.h | 72 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/sigcontext.h | 32 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/signum.h | 96 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/sigset.h | 125 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/sigstack.h | 46 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/socket.h | 291 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/stat.h | 124 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/statfs.h | 77 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/types.h | 148 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/uio.h | 42 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/utmp.h | 73 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/utmpx.h | 67 | ||||
-rw-r--r-- | sysdeps/unix/sysv/aix/bits/utsname.h | 23 |
20 files changed, 1870 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/aix/bits/dirent.h b/sysdeps/unix/sysv/aix/bits/dirent.h new file mode 100644 index 0000000000..48fb1b220f --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/dlfcn.h b/sysdeps/unix/sysv/aix/bits/dlfcn.h new file mode 100644 index 0000000000..e67c9a8c7c --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/endian.h b/sysdeps/unix/sysv/aix/bits/endian.h new file mode 100644 index 0000000000..a86de7e502 --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/errno.h b/sysdeps/unix/sysv/aix/bits/errno.h new file mode 100644 index 0000000000..37800c3874 --- /dev/null +++ b/sysdeps/unix/sysv/aix/bits/errno.h @@ -0,0 +1,155 @@ +/* Copyright (C) 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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 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.*/ + +# ifdef _LIBC +# define __set_errno(val) errno = (val) +# endif +#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/sysdeps/unix/sysv/aix/bits/fcntl.h b/sysdeps/unix/sysv/aix/bits/fcntl.h new file mode 100644 index 0000000000..039a604b19 --- /dev/null +++ b/sysdeps/unix/sysv/aix/bits/fcntl.h @@ -0,0 +1,137 @@ +/* O_*, F_*, FD_* bit values for Linux. + Copyright (C) 1995, 1996, 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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 + +#ifdef __USE_BSD +# 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/sysdeps/unix/sysv/aix/bits/resource.h b/sysdeps/unix/sysv/aix/bits/resource.h new file mode 100644 index 0000000000..823a5f0659 --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/setjmp.h b/sysdeps/unix/sysv/aix/bits/setjmp.h new file mode 100644 index 0000000000..675ed62e3f --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/sigaction.h b/sysdeps/unix/sysv/aix/bits/sigaction.h new file mode 100644 index 0000000000..75c35e5b32 --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/sigcontext.h b/sysdeps/unix/sysv/aix/bits/sigcontext.h new file mode 100644 index 0000000000..86b3c24910 --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/signum.h b/sysdeps/unix/sysv/aix/bits/signum.h new file mode 100644 index 0000000000..b4397448b2 --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/sigset.h b/sysdeps/unix/sysv/aix/bits/sigset.h new file mode 100644 index 0000000000..4735796259 --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/sigstack.h b/sysdeps/unix/sysv/aix/bits/sigstack.h new file mode 100644 index 0000000000..c229cc03f7 --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/socket.h b/sysdeps/unix/sysv/aix/bits/socket.h new file mode 100644 index 0000000000..e89735453a --- /dev/null +++ b/sysdeps/unix/sysv/aix/bits/socket.h @@ -0,0 +1,291 @@ +/* System-specific socket constants and types. AIX version. + Copyright (C) 1991,92,94,95,96,97,98,99, 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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. */ +typedef unsigned int socklen_t; + +/* 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__ && defined __GNUC__ && __GNUC__ >= 2 + unsigned char __cmsg_data[0]; /* Ancillary data. */ + /* XXX Perhaps this should be removed. */ +#endif + }; + +/* Ancillary data object manipulation macros. */ +#if !defined __STRICT_ANSI__ && defined __GNUC__ && __GNUC__ >= 2 +# 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/sysdeps/unix/sysv/aix/bits/stat.h b/sysdeps/unix/sysv/aix/bits/stat.h new file mode 100644 index 0000000000..252662e062 --- /dev/null +++ b/sysdeps/unix/sysv/aix/bits/stat.h @@ -0,0 +1,124 @@ +/* Copyright (C) 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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. */ +#ifndef __USE_FILE_OFFSET64 + __ino_t st_ino; /* File serial number. */ +#else + __ino64_t st_ino; /* File serial number. */ +#endif + __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. */ +#ifndef __USE_FILE_OFFSET64 + __blkcnt_t st_blocks; /* Number 512-byte blocks allocated. */ +#else + __blkcnt64_t st_blocks; /* Number 512-byte blocks allocated. */ +#endif + 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. */ + __ino64_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. */ + __blkcnt64_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. */ + +/* These don't actually exist on System V, but having them doesn't hurt. */ +#define __S_IFLNK 0120000 /* Symbolic link. */ +#define __S_IFSOCK 0140000 /* Socket. */ + +/* 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/sysdeps/unix/sysv/aix/bits/statfs.h b/sysdeps/unix/sysv/aix/bits/statfs.h new file mode 100644 index 0000000000..2877339e74 --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/types.h b/sysdeps/unix/sysv/aix/bits/types.h new file mode 100644 index 0000000000..c41b34c1ef --- /dev/null +++ b/sysdeps/unix/sysv/aix/bits/types.h @@ -0,0 +1,148 @@ +/* Copyright (C) 1991,92,94,95,96,97,98,99 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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_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 __u_long __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 __u_long __useconds_t; +typedef int __suseconds_t; +typedef long int __swblk_t; /* Type of a swap block maybe? */ + +typedef int __clock_t; + +/* One element in the file descriptor mask array. */ +typedef unsigned long int __fd_mask; + +/* Number of descriptors that can fit in an `fd_set'. */ +#define __FD_SETSIZE 1024 + +/* It's easier to assume 8-bit bytes than to get CHAR_BIT. */ +#define __NFDBITS (8 * sizeof (__fd_mask)) +#define __FDELT(d) ((d) / __NFDBITS) +#define __FDMASK(d) ((__fd_mask) 1 << ((d) % __NFDBITS)) + +/* fd_set for select and pselect. */ +typedef struct + { + /* XPG4.2 requires this member name. Otherwise avoid the name + from the global namespace. */ +#ifdef __USE_XOPEN + __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS]; +# define __FDS_BITS(set) ((set)->fds_bits) +#else + __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS]; +# define __FDS_BITS(set) ((set)->__fds_bits) +#endif + } __fd_set; + + +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 int __intptr_t; + +#endif /* bits/types.h */ diff --git a/sysdeps/unix/sysv/aix/bits/uio.h b/sysdeps/unix/sysv/aix/bits/uio.h new file mode 100644 index 0000000000..5868ccc257 --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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/sysdeps/unix/sysv/aix/bits/utmp.h b/sysdeps/unix/sysv/aix/bits/utmp.h new file mode 100644 index 0000000000..04844096b0 --- /dev/null +++ b/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 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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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 <time.h> + +#define _PATH_UTMP "/etc/utmp" +#define _PATH_WTMP "/var/adm/wtmp" +#define _PATH_LASTLOG "/var/adm/lastlog" + + +#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]; + }; + + +/* 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 + + +/* Values for the `ut_type' field of a `struct utmp'. */ +#define EMPTY 0 +#define RUN_LVL 1 +#define BOOT_TIME 2 +#define OLD_TIME 3 +#define NEW_TIME 4 +#define INIT_PROCESS 5 +#define LOGIN_PROCESS 6 +#define USER_PROCESS 7 +#define DEAD_PROCESS 8 +#define ACCOUNTING 9 diff --git a/sysdeps/unix/sysv/aix/bits/utmpx.h b/sysdeps/unix/sysv/aix/bits/utmpx.h new file mode 100644 index 0000000000..7a7bce2f70 --- /dev/null +++ b/sysdeps/unix/sysv/aix/bits/utmpx.h @@ -0,0 +1,67 @@ +/* Structures and defenitions for the user accounting database. AIX. + Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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 diff --git a/sysdeps/unix/sysv/aix/bits/utsname.h b/sysdeps/unix/sysv/aix/bits/utsname.h new file mode 100644 index 0000000000..e6958f0783 --- /dev/null +++ b/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 Library General Public License as + published by the Free Software Foundation; either version 2 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. 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 |