| From 8eccce991d08960d135b97066621c8d3248a79b7 Mon Sep 17 00:00:00 2001 |
| From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> |
| Date: Thu, 17 Jan 2013 19:29:22 +0100 |
| Subject: [PATCH] socket.h: pull socket_type.h from eglibc |
| |
| Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> |
| --- |
| Makefile.in | 2 +- |
| libc/inet/opensock.c | 9 +- |
| libc/sysdeps/linux/alpha/bits/socket_type.h | 54 ++++ |
| libc/sysdeps/linux/common/bits/kernel-features.h | 10 +- |
| libc/sysdeps/linux/common/bits/socket.h | 104 +++--- |
| libc/sysdeps/linux/common/bits/socket_type.h | 54 ++++ |
| libc/sysdeps/linux/common/cmsg_nxthdr.c | 1 + |
| libc/sysdeps/linux/hppa/bits/socket_type.h | 54 ++++ |
| libc/sysdeps/linux/mips/bits/socket.h | 369 --------------------- |
| libc/sysdeps/linux/mips/bits/socket_type.h | 55 ++++ |
| libc/sysdeps/linux/sparc/bits/socket.h | 376 ---------------------- |
| libc/sysdeps/linux/sparc/bits/socket_type.h | 54 ++++ |
| 12 files changed, 325 insertions(+), 817 deletions(-) |
| create mode 100644 libc/sysdeps/linux/alpha/bits/socket_type.h |
| create mode 100644 libc/sysdeps/linux/common/bits/socket_type.h |
| create mode 100644 libc/sysdeps/linux/hppa/bits/socket_type.h |
| delete mode 100644 libc/sysdeps/linux/mips/bits/socket.h |
| create mode 100644 libc/sysdeps/linux/mips/bits/socket_type.h |
| delete mode 100644 libc/sysdeps/linux/sparc/bits/socket.h |
| create mode 100644 libc/sysdeps/linux/sparc/bits/socket_type.h |
| |
| diff --git a/Makefile.in b/Makefile.in |
| index 87b8e4b..69abfaf 100644 |
| --- a/Makefile.in |
| +++ b/Makefile.in |
| @@ -255,7 +255,7 @@ HEADERS_RM-$(UCLIBC_HAS_REALTIME) += mqueue.h bits/mqueue.h sched.h \ |
| HEADERS_RM-$(UCLIBC_HAS_REGEX) += regex.h regexp.h |
| HEADERS_RM-$(UCLIBC_HAS_RPC) += rpc |
| HEADERS_RM-$(UCLIBC_HAS_SHADOW) += shadow.h |
| -HEADERS_RM-$(UCLIBC_HAS_SOCKET) += sys/socket.h bits/socket.h sys/socketvar.h |
| +HEADERS_RM-$(UCLIBC_HAS_SOCKET) += sys/socket.h bits/socket.h sys/socketvar.h bits/socket_type.h |
| HEADERS_RM-$(UCLIBC_HAS_SYSLOG) += syslog.h sys/syslog.h bits/syslog*.h |
| HEADERS_RM-$(UCLIBC_HAS_THREADS) += *thread*.h semaphore.h \ |
| bits/*thread*.h \ |
| diff --git a/libc/inet/opensock.c b/libc/inet/opensock.c |
| index 86f8c59..da5858f 100644 |
| --- a/libc/inet/opensock.c |
| +++ b/libc/inet/opensock.c |
| @@ -16,14 +16,11 @@ |
| Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
| 02111-1307 USA. */ |
| |
| -#include <assert.h> |
| -#include <errno.h> |
| -#include <stdio.h> |
| -#include <string.h> |
| -#include <unistd.h> |
| -#include <sys/socket.h> |
| + |
| #include <features.h> |
| #include <libc-internal.h> |
| +#include <sys/socket.h> |
| +#include <bits/kernel-features.h> |
| |
| /* Return a socket of any type. The socket can be used in subsequent |
| ioctl calls to talk to the kernel. */ |
| diff --git a/libc/sysdeps/linux/alpha/bits/socket_type.h b/libc/sysdeps/linux/alpha/bits/socket_type.h |
| new file mode 100644 |
| index 0000000..ee55d66 |
| --- /dev/null |
| +++ b/libc/sysdeps/linux/alpha/bits/socket_type.h |
| @@ -0,0 +1,54 @@ |
| +/* Define enum __socket_type for Linux/Alpha. |
| + Copyright (C) 1991-2012 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, see |
| + <http://www.gnu.org/licenses/>. */ |
| + |
| +#ifndef _SYS_SOCKET_H |
| +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead." |
| +#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_DCCP = 6, /* Datagram Congestion Control Protocol. */ |
| +#define SOCK_DCCP SOCK_DCCP |
| + SOCK_PACKET = 10, /* Linux specific way of getting packets |
| + at the dev level. For writing rarp and |
| + other similar things on the user level. */ |
| +#define SOCK_PACKET SOCK_PACKET |
| + |
| + /* Flags to be ORed into the type parameter of socket and socketpair. */ |
| + |
| + SOCK_CLOEXEC = 010000000, /* Atomically set close-on-exec flag for the |
| + new descriptor(s). */ |
| +#define SOCK_CLOEXEC SOCK_CLOEXEC |
| + SOCK_NONBLOCK = 0x40000000 /* Atomically mark descriptor(s) as |
| + non-blocking. */ |
| +#define SOCK_NONBLOCK SOCK_NONBLOCK |
| +}; |
| diff --git a/libc/sysdeps/linux/common/bits/kernel-features.h b/libc/sysdeps/linux/common/bits/kernel-features.h |
| index 5ea85d2..5665e24 100644 |
| --- a/libc/sysdeps/linux/common/bits/kernel-features.h |
| +++ b/libc/sysdeps/linux/common/bits/kernel-features.h |
| @@ -311,17 +311,19 @@ |
| |
| /* Support for various CLOEXEC and NONBLOCK flags was added for x86, |
| * x86-64, PPC, IA-64, and SPARC in 2.6.27. */ |
| -#if __LINUX_KERNEL_VERSION >= 0x02061b \ |
| - && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \ |
| - || defined __ia64__ || defined __sparc__ || defined __s390__) |
| +#if (__LINUX_KERNEL_VERSION >= 0x02061b \ |
| + && (defined __i386__ || defined __x86_64__ || defined __powerpc__ \ |
| + || defined __ia64__ || defined __sparc__ || defined __s390__) \ |
| + ) || (__LINUX_KERNEL_VERSION >= 0x020621 && defined __alpha__) \ |
| + || defined __aarch64__ || defined __tile__ |
| /* # define __ASSUME_SOCK_CLOEXEC 1 */ |
| /* # define __ASSUME_IN_NONBLOCK 1 */ |
| # define __ASSUME_PIPE2 1 |
| /* # define __ASSUME_EVENTFD2 1 */ |
| /* # define __ASSUME_SIGNALFD4 1 */ |
| +/* # define __ASSUME_DUP3 1 */ |
| #endif |
| |
| - |
| /* These features were surely available with 2.4.12. */ |
| #if __LINUX_KERNEL_VERSION >= 132108 && defined __mc68000__ |
| # define __ASSUME_MMAP2_SYSCALL 1 |
| diff --git a/libc/sysdeps/linux/common/bits/socket.h b/libc/sysdeps/linux/common/bits/socket.h |
| index 7e12733..6a89340 100644 |
| --- a/libc/sysdeps/linux/common/bits/socket.h |
| +++ b/libc/sysdeps/linux/common/bits/socket.h |
| @@ -1,5 +1,6 @@ |
| /* System-specific socket constants and types. Linux version. |
| - Copyright (C) 1991,1992,1994-2001,2004,2006 Free Software Foundation, Inc. |
| + Copyright (C) 1991,1992,1994-2001,2004,2006-2012 |
| + 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 |
| @@ -20,12 +21,11 @@ |
| #ifndef __BITS_SOCKET_H |
| #define __BITS_SOCKET_H |
| |
| -#if !defined _SYS_SOCKET_H && !defined _NETINET_IN_H |
| +#ifndef _SYS_SOCKET_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> |
| @@ -37,37 +37,8 @@ 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_PACKET = 10, /* Linux specific way of getting packets |
| - at the dev level. For writing rarp and |
| - other similar things on the user level. */ |
| -#define SOCK_PACKET SOCK_PACKET |
| - |
| - /* Flags to be ORed into the type parameter of socket and socketpair and |
| - used for the flags parameter of paccept. */ |
| - |
| - SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the |
| - new descriptor(s). */ |
| -#define SOCK_CLOEXEC SOCK_CLOEXEC |
| - SOCK_NONBLOCK = 04000 /* Atomically mark descriptor(s) as |
| - non-blocking. */ |
| -#define SOCK_NONBLOCK SOCK_NONBLOCK |
| -}; |
| +/* Get the architecture-dependent definition of enum __socket_type. */ |
| +#include <bits/socket_type.h> |
| |
| /* Protocol families. */ |
| #define PF_UNSPEC 0 /* Unspecified. */ |
| @@ -94,22 +65,24 @@ enum __socket_type |
| #define PF_ASH 18 /* Ash. */ |
| #define PF_ECONET 19 /* Acorn Econet. */ |
| #define PF_ATMSVC 20 /* ATM SVCs. */ |
| +#define PF_RDS 21 /* RDS sockets. */ |
| #define PF_SNA 22 /* Linux SNA Project */ |
| #define PF_IRDA 23 /* IRDA sockets. */ |
| #define PF_PPPOX 24 /* PPPoX sockets. */ |
| #define PF_WANPIPE 25 /* Wanpipe API sockets. */ |
| -#define PF_LLC 26 /* Linux LLC. */ |
| -#define PF_CAN 29 /* Controller Area Network. */ |
| -#define PF_TIPC 30 /* TIPC sockets. */ |
| +#define PF_LLC 26 /* Linux LLC. */ |
| +#define PF_CAN 29 /* Controller Area Network. */ |
| +#define PF_TIPC 30 /* TIPC sockets. */ |
| #define PF_BLUETOOTH 31 /* Bluetooth sockets. */ |
| #define PF_IUCV 32 /* IUCV sockets. */ |
| -#define PF_RXRPC 33 /* RxRPC sockets. */ |
| -#define PF_ISDN 34 /* mISDN sockets. */ |
| -#define PF_PHONET 35 /* Phonet sockets. */ |
| -#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */ |
| -#define PF_CAIF 37 /* CAIF sockets. */ |
| -#define PF_ALG 38 /* Algorithm sockets. */ |
| -#define PF_MAX 39 /* For now.. */ |
| +#define PF_RXRPC 33 /* RxRPC sockets. */ |
| +#define PF_ISDN 34 /* mISDN sockets. */ |
| +#define PF_PHONET 35 /* Phonet sockets. */ |
| +#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */ |
| +#define PF_CAIF 37 /* CAIF sockets. */ |
| +#define PF_ALG 38 /* Algorithm sockets. */ |
| +#define PF_NFC 39 /* NFC sockets. */ |
| +#define PF_MAX 40 /* For now.. */ |
| |
| /* Address families. */ |
| #define AF_UNSPEC PF_UNSPEC |
| @@ -136,21 +109,23 @@ enum __socket_type |
| #define AF_ASH PF_ASH |
| #define AF_ECONET PF_ECONET |
| #define AF_ATMSVC PF_ATMSVC |
| +#define AF_RDS PF_RDS |
| #define AF_SNA PF_SNA |
| #define AF_IRDA PF_IRDA |
| #define AF_PPPOX PF_PPPOX |
| #define AF_WANPIPE PF_WANPIPE |
| -#define AF_LLC PF_LLC |
| -#define AF_CAN PF_CAN |
| -#define AF_TIPC PF_TIPC |
| +#define AF_LLC PF_LLC |
| +#define AF_CAN PF_CAN |
| +#define AF_TIPC PF_TIPC |
| #define AF_BLUETOOTH PF_BLUETOOTH |
| -#define AF_IUCV PF_IUCV |
| -#define AF_RXRPC PF_RXRPC |
| -#define AF_ISDN PF_ISDN |
| -#define AF_PHONET PF_PHONET |
| -#define AF_IEEE802154 PF_IEEE802154 |
| -#define AF_CAIF PF_CAIF |
| -#define AF_ALG PF_ALG |
| +#define AF_IUCV PF_IUCV |
| +#define AF_RXRPC PF_RXRPC |
| +#define AF_ISDN PF_ISDN |
| +#define AF_PHONET PF_PHONET |
| +#define AF_IEEE802154 PF_IEEE802154 |
| +#define AF_CAIF PF_CAIF |
| +#define AF_ALG PF_ALG |
| +#define AF_NFC PF_NFC |
| #define AF_MAX PF_MAX |
| |
| /* Socket level values. Others are defined in the appropriate headers. |
| @@ -235,8 +210,14 @@ enum |
| #define MSG_ERRQUEUE MSG_ERRQUEUE |
| MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */ |
| #define MSG_NOSIGNAL MSG_NOSIGNAL |
| - MSG_MORE = 0x8000 /* Sender will send more. */ |
| + MSG_MORE = 0x8000, /* Sender will send more. */ |
| #define MSG_MORE MSG_MORE |
| + MSG_WAITFORONE = 0x10000, /* Wait for at least one packet to return.*/ |
| +#define MSG_WAITFORONE MSG_WAITFORONE |
| + MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file |
| + descriptor received through |
| + SCM_RIGHTS. */ |
| +#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC |
| }; |
| |
| |
| @@ -290,7 +271,7 @@ struct cmsghdr |
| #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) |
| + ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0) |
| #define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) \ |
| & (size_t) ~(sizeof (size_t) - 1)) |
| #define CMSG_SPACE(len) (CMSG_ALIGN (len) \ |
| @@ -302,14 +283,14 @@ extern struct cmsghdr *__cmsg_nxthdr (struct msghdr *__mhdr, |
| libc_hidden_proto(__cmsg_nxthdr) |
| #ifdef __USE_EXTERN_INLINES |
| # ifndef _EXTERN_INLINE |
| -# define _EXTERN_INLINE extern __inline |
| +# define _EXTERN_INLINE __extern_inline |
| # endif |
| _EXTERN_INLINE struct cmsghdr * |
| __NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)) |
| { |
| if ((size_t) __cmsg->cmsg_len < sizeof (struct cmsghdr)) |
| /* The kernel header does this so there may be a reason. */ |
| - return 0; |
| + return (struct cmsghdr *) 0; |
| |
| __cmsg = (struct cmsghdr *) ((unsigned char *) __cmsg |
| + CMSG_ALIGN (__cmsg->cmsg_len)); |
| @@ -318,7 +299,7 @@ __NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)) |
| || ((unsigned char *) __cmsg + CMSG_ALIGN (__cmsg->cmsg_len) |
| > ((unsigned char *) __mhdr->msg_control + __mhdr->msg_controllen))) |
| /* No more entries. */ |
| - return 0; |
| + return (struct cmsghdr *) 0; |
| return __cmsg; |
| } |
| #endif /* Use `extern inline'. */ |
| @@ -329,20 +310,21 @@ enum |
| { |
| SCM_RIGHTS = 0x01 /* Transfer file descriptors. */ |
| #define SCM_RIGHTS SCM_RIGHTS |
| -#ifdef __USE_BSD |
| +#ifdef __USE_GNU |
| , SCM_CREDENTIALS = 0x02 /* Credentials passing. */ |
| # define SCM_CREDENTIALS SCM_CREDENTIALS |
| #endif |
| }; |
| |
| +#ifdef __USE_GNU |
| /* User visible structure for SCM_CREDENTIALS message */ |
| - |
| struct ucred |
| { |
| pid_t pid; /* PID of sending process. */ |
| uid_t uid; /* UID of sending process. */ |
| gid_t gid; /* GID of sending process. */ |
| }; |
| +#endif |
| |
| /* Get socket manipulation related informations from kernel headers. */ |
| #ifndef __GLIBC__ |
| diff --git a/libc/sysdeps/linux/common/bits/socket_type.h b/libc/sysdeps/linux/common/bits/socket_type.h |
| new file mode 100644 |
| index 0000000..65436b0 |
| --- /dev/null |
| +++ b/libc/sysdeps/linux/common/bits/socket_type.h |
| @@ -0,0 +1,54 @@ |
| +/* Define enum __socket_type for generic Linux. |
| + Copyright (C) 1991-2012 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, see |
| + <http://www.gnu.org/licenses/>. */ |
| + |
| +#ifndef _SYS_SOCKET_H |
| +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead." |
| +#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_DCCP = 6, /* Datagram Congestion Control Protocol. */ |
| +#define SOCK_DCCP SOCK_DCCP |
| + SOCK_PACKET = 10, /* Linux specific way of getting packets |
| + at the dev level. For writing rarp and |
| + other similar things on the user level. */ |
| +#define SOCK_PACKET SOCK_PACKET |
| + |
| + /* Flags to be ORed into the type parameter of socket and socketpair. */ |
| + |
| + SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the |
| + new descriptor(s). */ |
| +#define SOCK_CLOEXEC SOCK_CLOEXEC |
| + SOCK_NONBLOCK = 00004000 /* Atomically mark descriptor(s) as |
| + non-blocking. */ |
| +#define SOCK_NONBLOCK SOCK_NONBLOCK |
| +}; |
| diff --git a/libc/sysdeps/linux/common/cmsg_nxthdr.c b/libc/sysdeps/linux/common/cmsg_nxthdr.c |
| index 0360b47..9c21190 100644 |
| --- a/libc/sysdeps/linux/common/cmsg_nxthdr.c |
| +++ b/libc/sysdeps/linux/common/cmsg_nxthdr.c |
| @@ -19,6 +19,7 @@ |
| |
| #define __FORCE_GLIBC |
| #include <features.h> |
| +#include <stddef.h> |
| /* Prevent math.h from defining a colliding inline */ |
| #undef __USE_EXTERN_INLINES |
| #include <sys/socket.h> |
| diff --git a/libc/sysdeps/linux/hppa/bits/socket_type.h b/libc/sysdeps/linux/hppa/bits/socket_type.h |
| new file mode 100644 |
| index 0000000..c6df6c3 |
| --- /dev/null |
| +++ b/libc/sysdeps/linux/hppa/bits/socket_type.h |
| @@ -0,0 +1,54 @@ |
| +/* Define enum __socket_type for Linux/HP-PARISC. |
| + Copyright (C) 2012 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, see |
| + <http://www.gnu.org/licenses/>. */ |
| + |
| +#ifndef _SYS_SOCKET_H |
| +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead." |
| +#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_DCCP = 6, /* Datagram Congestion Control Protocol. */ |
| +#define SOCK_DCCP SOCK_DCCP |
| + SOCK_PACKET = 10, /* Linux specific way of getting packets |
| + at the dev level. For writing rarp and |
| + other similar things on the user level. */ |
| +#define SOCK_PACKET SOCK_PACKET |
| + |
| + /* Flags to be ORed into the type parameter of socket and socketpair. */ |
| + |
| + SOCK_CLOEXEC = 010000000, /* Atomically set close-on-exec flag for the |
| + new descriptor(s). */ |
| +#define SOCK_CLOEXEC SOCK_CLOEXEC |
| + SOCK_NONBLOCK = 0x40000000 /* Atomically mark descriptor(s) as |
| + non-blocking. */ |
| +#define SOCK_NONBLOCK SOCK_NONBLOCK |
| +}; |
| diff --git a/libc/sysdeps/linux/mips/bits/socket.h b/libc/sysdeps/linux/mips/bits/socket.h |
| deleted file mode 100644 |
| index 27ceafa..0000000 |
| --- a/libc/sysdeps/linux/mips/bits/socket.h |
| +++ /dev/null |
| @@ -1,369 +0,0 @@ |
| -/* System-specific socket constants and types. Linux/MIPS version. |
| - Copyright (C) 1991, 92, 1994-1999, 2000, 2001, 2004, 2005, 2006 |
| - 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_DGRAM = 1, /* Connectionless, unreliable datagrams |
| - of fixed maximum length. */ |
| -#define SOCK_DGRAM SOCK_DGRAM |
| - SOCK_STREAM = 2, /* Sequenced, reliable, connection-based |
| - byte streams. */ |
| -#define SOCK_STREAM SOCK_STREAM |
| - 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_DCCP = 6, |
| -#define SOCK_DCCP SOCK_DCCP /* Datagram Congestion Control Protocol. */ |
| - SOCK_PACKET = 10, /* Linux specific way of getting packets |
| - at the dev level. For writing rarp and |
| - other similar things on the user level. */ |
| -#define SOCK_PACKET SOCK_PACKET |
| - /* Flags to be ORed into the type parameter of socket and socketpair and |
| - used for the flags parameter of paccept. */ |
| - |
| - SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the |
| - new descriptor(s). */ |
| -#define SOCK_CLOEXEC SOCK_CLOEXEC |
| - SOCK_NONBLOCK = 0200 /* Atomically mark descriptor(s) as |
| - non-blocking. */ |
| -#define SOCK_NONBLOCK SOCK_NONBLOCK |
| -}; |
| - |
| -/* 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_AX25 3 /* Amateur Radio AX.25. */ |
| -#define PF_IPX 4 /* Novell Internet Protocol. */ |
| -#define PF_APPLETALK 5 /* Appletalk DDP. */ |
| -#define PF_NETROM 6 /* Amateur radio NetROM. */ |
| -#define PF_BRIDGE 7 /* Multiprotocol bridge. */ |
| -#define PF_ATMPVC 8 /* ATM PVCs. */ |
| -#define PF_X25 9 /* Reserved for X.25 project. */ |
| -#define PF_INET6 10 /* IP version 6. */ |
| -#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */ |
| -#define PF_DECnet 12 /* Reserved for DECnet project. */ |
| -#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */ |
| -#define PF_SECURITY 14 /* Security callback pseudo AF. */ |
| -#define PF_KEY 15 /* PF_KEY key management API. */ |
| -#define PF_NETLINK 16 |
| -#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */ |
| -#define PF_PACKET 17 /* Packet family. */ |
| -#define PF_ASH 18 /* Ash. */ |
| -#define PF_ECONET 19 /* Acorn Econet. */ |
| -#define PF_ATMSVC 20 /* ATM SVCs. */ |
| -#define PF_SNA 22 /* Linux SNA Project */ |
| -#define PF_IRDA 23 /* IRDA sockets. */ |
| -#define PF_PPPOX 24 /* PPPoX sockets. */ |
| -#define PF_WANPIPE 25 /* Wanpipe API sockets. */ |
| -#define PF_LLC 26 /* Linux LLC. */ |
| -#define PF_CAN 29 /* Controller Area Network. */ |
| -#define PF_TIPC 30 /* TIPC sockets. */ |
| -#define PF_BLUETOOTH 31 /* Bluetooth sockets. */ |
| -#define PF_IUCV 32 /* IUCV sockets. */ |
| -#define PF_RXRPC 33 /* RxRPC sockets. */ |
| -#define PF_ISDN 34 /* mISDN sockets. */ |
| -#define PF_PHONET 35 /* Phonet sockets. */ |
| -#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */ |
| -#define PF_CAIF 37 /* CAIF sockets. */ |
| -#define PF_ALG 38 /* Algorithm sockets. */ |
| -#define PF_MAX 39 /* 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_AX25 PF_AX25 |
| -#define AF_IPX PF_IPX |
| -#define AF_APPLETALK PF_APPLETALK |
| -#define AF_NETROM PF_NETROM |
| -#define AF_BRIDGE PF_BRIDGE |
| -#define AF_ATMPVC PF_ATMPVC |
| -#define AF_X25 PF_X25 |
| -#define AF_INET6 PF_INET6 |
| -#define AF_ROSE PF_ROSE |
| -#define AF_DECnet PF_DECnet |
| -#define AF_NETBEUI PF_NETBEUI |
| -#define AF_SECURITY PF_SECURITY |
| -#define AF_KEY PF_KEY |
| -#define AF_NETLINK PF_NETLINK |
| -#define AF_ROUTE PF_ROUTE |
| -#define AF_PACKET PF_PACKET |
| -#define AF_ASH PF_ASH |
| -#define AF_ECONET PF_ECONET |
| -#define AF_ATMSVC PF_ATMSVC |
| -#define AF_SNA PF_SNA |
| -#define AF_IRDA PF_IRDA |
| -#define AF_PPPOX PF_PPPOX |
| -#define AF_WANPIPE PF_WANPIPE |
| -#define AF_LLC PF_LLC |
| -#define AF_CAN PF_CAN |
| -#define AF_TIPC PF_TIPC |
| -#define AF_BLUETOOTH PF_BLUETOOTH |
| -#define AF_IUCV PF_IUCV |
| -#define AF_RXRPC PF_RXRPC |
| -#define AF_ISDN PF_ISDN |
| -#define AF_PHONET PF_PHONET |
| -#define AF_IEEE802154 PF_IEEE802154 |
| -#define AF_CAIF PF_CAIF |
| -#define AF_ALG PF_ALG |
| -#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_RAW 255 |
| -#define SOL_DECNET 261 |
| -#define SOL_X25 262 |
| -#define SOL_PACKET 263 |
| -#define SOL_ATM 264 /* ATM layer (cell level). */ |
| -#define SOL_AAL 265 /* ATM Adaption Layer (packet level). */ |
| -#define SOL_IRDA 266 |
| - |
| -/* Maximum queue length specifiable by listen. */ |
| -#define SOMAXCONN 128 |
| - |
| -/* 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. */ |
| -#define __ss_aligntype unsigned long int |
| -#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 |
| -#ifdef __USE_GNU |
| - /* DECnet uses a different name. */ |
| - MSG_TRYHARD = MSG_DONTROUTE, |
| -# define MSG_TRYHARD MSG_DONTROUTE |
| -#endif |
| - MSG_CTRUNC = 0x08, /* Control data lost before delivery. */ |
| -#define MSG_CTRUNC MSG_CTRUNC |
| - MSG_PROXY = 0x10, /* Supply or ask second address. */ |
| -#define MSG_PROXY MSG_PROXY |
| - MSG_TRUNC = 0x20, |
| -#define MSG_TRUNC MSG_TRUNC |
| - MSG_DONTWAIT = 0x40, /* Nonblocking IO. */ |
| -#define MSG_DONTWAIT MSG_DONTWAIT |
| - MSG_EOR = 0x80, /* End of record. */ |
| -#define MSG_EOR MSG_EOR |
| - MSG_WAITALL = 0x100, /* Wait for a full request. */ |
| -#define MSG_WAITALL MSG_WAITALL |
| - MSG_FIN = 0x200, |
| -#define MSG_FIN MSG_FIN |
| - MSG_SYN = 0x400, |
| -#define MSG_SYN MSG_SYN |
| - MSG_CONFIRM = 0x800, /* Confirm path validity. */ |
| -#define MSG_CONFIRM MSG_CONFIRM |
| - MSG_RST = 0x1000, |
| -#define MSG_RST MSG_RST |
| - MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */ |
| -#define MSG_ERRQUEUE MSG_ERRQUEUE |
| - MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */ |
| -#define MSG_NOSIGNAL MSG_NOSIGNAL |
| - MSG_MORE = 0x8000, /* Sender will send more. */ |
| -#define MSG_MORE MSG_MORE |
| - MSG_WAITFORONE = 0x10000, /* Wait for at least one packet to return.*/ |
| -#define MSG_WAITFORONE MSG_WAITFORONE |
| - |
| - MSG_CMSG_CLOEXEC = 0x40000000 /* Set close_on_exit for file |
| - descriptor received through |
| - SCM_RIGHTS. */ |
| -#define MSG_CMSG_CLOEXEC MSG_CMSG_CLOEXEC |
| - }; |
| - |
| - |
| -/* Structure describing messages sent by |
| - `sendmsg' and received by `recvmsg'. */ |
| -/* Note: do not change these members to match glibc; these match the |
| - SuSv3 spec already (e.g. msg_iovlen/msg_controllen). |
| - http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/socket.h.html */ |
| -/* Note: linux kernel uses __kernel_size_t (which is 8bytes on 64bit |
| - platforms, and 4bytes on 32bit platforms) for msg_iovlen/msg_controllen */ |
| -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. */ |
| -#if __WORDSIZE == 32 |
| - int msg_iovlen; /* Number of elements in the vector. */ |
| -#else |
| - size_t msg_iovlen; /* Number of elements in the vector. */ |
| -#endif |
| - |
| - void *msg_control; /* Ancillary data (eg BSD filedesc passing). */ |
| -#if __WORDSIZE == 32 |
| - socklen_t msg_controllen; /* Ancillary data buffer length. */ |
| -#else |
| - size_t msg_controllen; /* Ancillary data buffer length. */ |
| -#endif |
| - |
| - int msg_flags; /* Flags on received message. */ |
| - }; |
| - |
| -/* Structure used for storage of ancillary data object information. */ |
| -struct cmsghdr |
| - { |
| - size_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) \ |
| - & (size_t) ~(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; |
| -libc_hidden_proto(__cmsg_nxthdr) |
| -#ifdef __USE_EXTERN_INLINES |
| -# ifndef _EXTERN_INLINE |
| -# define _EXTERN_INLINE extern __inline |
| -# endif |
| -_EXTERN_INLINE struct cmsghdr * |
| -__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)) |
| -{ |
| - 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 |
| -#ifdef __USE_BSD |
| - , SCM_CREDENTIALS = 0x02 /* Credentials passing. */ |
| -# define SCM_CREDENTIALS SCM_CREDENTIALS |
| -#endif |
| - }; |
| - |
| -/* User visible structure for SCM_CREDENTIALS message */ |
| - |
| -struct ucred |
| -{ |
| - pid_t pid; /* PID of sending process. */ |
| - uid_t uid; /* UID of sending process. */ |
| - gid_t gid; /* GID of sending process. */ |
| -}; |
| - |
| -/* Get socket manipulation related informations from kernel headers. */ |
| -#ifndef __GLIBC__ |
| -#define __GLIBC__ 2 |
| -#include <asm/socket.h> |
| -#undef __GLIBC__ |
| -#else |
| -#include <asm/socket.h> |
| -#endif |
| - |
| - |
| -/* 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/libc/sysdeps/linux/mips/bits/socket_type.h b/libc/sysdeps/linux/mips/bits/socket_type.h |
| new file mode 100644 |
| index 0000000..20d2732 |
| --- /dev/null |
| +++ b/libc/sysdeps/linux/mips/bits/socket_type.h |
| @@ -0,0 +1,55 @@ |
| +/* System-specific socket constants and types. Linux/MIPS version. |
| + Copyright (C) 1991, 92, 1994-1999, 2000, 2001, 2004, 2005, 2006 |
| + 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, see |
| + <http://www.gnu.org/licenses/>. */ |
| + |
| +#ifndef _SYS_SOCKET_H |
| +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead." |
| +#endif |
| + |
| +/* Types of sockets. */ |
| +enum __socket_type |
| +{ |
| + SOCK_DGRAM = 1, /* Connectionless, unreliable datagrams |
| + of fixed maximum length. */ |
| +#define SOCK_DGRAM SOCK_DGRAM |
| + SOCK_STREAM = 2, /* Sequenced, reliable, connection-based |
| + byte streams. */ |
| +#define SOCK_STREAM SOCK_STREAM |
| + 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_DCCP = 6, |
| +#define SOCK_DCCP SOCK_DCCP /* Datagram Congestion Control Protocol. */ |
| + SOCK_PACKET = 10, /* Linux specific way of getting packets |
| + at the dev level. For writing rarp and |
| + other similar things on the user level. */ |
| +#define SOCK_PACKET SOCK_PACKET |
| + |
| + /* Flags to be ORed into the type parameter of socket and socketpair. */ |
| + |
| + SOCK_CLOEXEC = 02000000, /* Atomically set close-on-exec flag for the |
| + new descriptor(s). */ |
| +#define SOCK_CLOEXEC SOCK_CLOEXEC |
| + SOCK_NONBLOCK = 00000200 /* Atomically mark descriptor(s) as |
| + non-blocking. */ |
| +#define SOCK_NONBLOCK SOCK_NONBLOCK |
| +}; |
| diff --git a/libc/sysdeps/linux/sparc/bits/socket.h b/libc/sysdeps/linux/sparc/bits/socket.h |
| deleted file mode 100644 |
| index 64973e2..0000000 |
| --- a/libc/sysdeps/linux/sparc/bits/socket.h |
| +++ /dev/null |
| @@ -1,376 +0,0 @@ |
| -/* System-specific socket constants and types. Linux version. |
| - Copyright (C) 1991,1992,1994-2001,2004,2006 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_PACKET = 10 /* Linux specific way of getting packets |
| - at the dev level. For writing rarp and |
| - other similar things on the user level. */ |
| -#define SOCK_PACKET SOCK_PACKET |
| -}; |
| - |
| -/* 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_AX25 3 /* Amateur Radio AX.25. */ |
| -#define PF_IPX 4 /* Novell Internet Protocol. */ |
| -#define PF_APPLETALK 5 /* Appletalk DDP. */ |
| -#define PF_NETROM 6 /* Amateur radio NetROM. */ |
| -#define PF_BRIDGE 7 /* Multiprotocol bridge. */ |
| -#define PF_ATMPVC 8 /* ATM PVCs. */ |
| -#define PF_X25 9 /* Reserved for X.25 project. */ |
| -#define PF_INET6 10 /* IP version 6. */ |
| -#define PF_ROSE 11 /* Amateur Radio X.25 PLP. */ |
| -#define PF_DECnet 12 /* Reserved for DECnet project. */ |
| -#define PF_NETBEUI 13 /* Reserved for 802.2LLC project. */ |
| -#define PF_SECURITY 14 /* Security callback pseudo AF. */ |
| -#define PF_KEY 15 /* PF_KEY key management API. */ |
| -#define PF_NETLINK 16 |
| -#define PF_ROUTE PF_NETLINK /* Alias to emulate 4.4BSD. */ |
| -#define PF_PACKET 17 /* Packet family. */ |
| -#define PF_ASH 18 /* Ash. */ |
| -#define PF_ECONET 19 /* Acorn Econet. */ |
| -#define PF_ATMSVC 20 /* ATM SVCs. */ |
| -#define PF_SNA 22 /* Linux SNA Project */ |
| -#define PF_IRDA 23 /* IRDA sockets. */ |
| -#define PF_PPPOX 24 /* PPPoX sockets. */ |
| -#define PF_WANPIPE 25 /* Wanpipe API sockets. */ |
| -#define PF_LLC 26 /* Linux LLC. */ |
| -#define PF_CAN 29 /* Controller Area Network. */ |
| -#define PF_TIPC 30 /* TIPC sockets. */ |
| -#define PF_BLUETOOTH 31 /* Bluetooth sockets. */ |
| -#define PF_IUCV 32 /* IUCV sockets. */ |
| -#define PF_RXRPC 33 /* RxRPC sockets. */ |
| -#define PF_ISDN 34 /* mISDN sockets. */ |
| -#define PF_PHONET 35 /* Phonet sockets. */ |
| -#define PF_IEEE802154 36 /* IEEE 802.15.4 sockets. */ |
| -#define PF_CAIF 37 /* CAIF sockets. */ |
| -#define PF_ALG 38 /* Algorithm sockets. */ |
| -#define PF_MAX 39 /* 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_AX25 PF_AX25 |
| -#define AF_IPX PF_IPX |
| -#define AF_APPLETALK PF_APPLETALK |
| -#define AF_NETROM PF_NETROM |
| -#define AF_BRIDGE PF_BRIDGE |
| -#define AF_ATMPVC PF_ATMPVC |
| -#define AF_X25 PF_X25 |
| -#define AF_INET6 PF_INET6 |
| -#define AF_ROSE PF_ROSE |
| -#define AF_DECnet PF_DECnet |
| -#define AF_NETBEUI PF_NETBEUI |
| -#define AF_SECURITY PF_SECURITY |
| -#define AF_KEY PF_KEY |
| -#define AF_NETLINK PF_NETLINK |
| -#define AF_ROUTE PF_ROUTE |
| -#define AF_PACKET PF_PACKET |
| -#define AF_ASH PF_ASH |
| -#define AF_ECONET PF_ECONET |
| -#define AF_ATMSVC PF_ATMSVC |
| -#define AF_SNA PF_SNA |
| -#define AF_IRDA PF_IRDA |
| -#define AF_PPPOX PF_PPPOX |
| -#define AF_WANPIPE PF_WANPIPE |
| -#define AF_LLC PF_LLC |
| -#define AF_CAN PF_CAN |
| -#define AF_TIPC PF_TIPC |
| -#define AF_BLUETOOTH PF_BLUETOOTH |
| -#define AF_IUCV PF_IUCV |
| -#define AF_RXRPC PF_RXRPC |
| -#define AF_ISDN PF_ISDN |
| -#define AF_PHONET PF_PHONET |
| -#define AF_IEEE802154 PF_IEEE802154 |
| -#define AF_CAIF PF_CAIF |
| -#define AF_ALG PF_ALG |
| -#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_RAW 255 |
| -#define SOL_DECNET 261 |
| -#define SOL_X25 262 |
| -#define SOL_PACKET 263 |
| -#define SOL_ATM 264 /* ATM layer (cell level). */ |
| -#define SOL_AAL 265 /* ATM Adaption Layer (packet level). */ |
| -#define SOL_IRDA 266 |
| - |
| -/* Maximum queue length specifiable by listen. */ |
| -#define SOMAXCONN 128 |
| - |
| -/* 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 |
| -#ifdef __USE_GNU |
| - /* DECnet uses a different name. */ |
| - MSG_TRYHARD = MSG_DONTROUTE, |
| -# define MSG_TRYHARD MSG_DONTROUTE |
| -#endif |
| - MSG_CTRUNC = 0x08, /* Control data lost before delivery. */ |
| -#define MSG_CTRUNC MSG_CTRUNC |
| - MSG_PROXY = 0x10, /* Supply or ask second address. */ |
| -#define MSG_PROXY MSG_PROXY |
| - MSG_TRUNC = 0x20, |
| -#define MSG_TRUNC MSG_TRUNC |
| - MSG_DONTWAIT = 0x40, /* Nonblocking IO. */ |
| -#define MSG_DONTWAIT MSG_DONTWAIT |
| - MSG_EOR = 0x80, /* End of record. */ |
| -#define MSG_EOR MSG_EOR |
| - MSG_WAITALL = 0x100, /* Wait for a full request. */ |
| -#define MSG_WAITALL MSG_WAITALL |
| - MSG_FIN = 0x200, |
| -#define MSG_FIN MSG_FIN |
| - MSG_SYN = 0x400, |
| -#define MSG_SYN MSG_SYN |
| - MSG_CONFIRM = 0x800, /* Confirm path validity. */ |
| -#define MSG_CONFIRM MSG_CONFIRM |
| - MSG_RST = 0x1000, |
| -#define MSG_RST MSG_RST |
| - MSG_ERRQUEUE = 0x2000, /* Fetch message from error queue. */ |
| -#define MSG_ERRQUEUE MSG_ERRQUEUE |
| - MSG_NOSIGNAL = 0x4000, /* Do not generate SIGPIPE. */ |
| -#define MSG_NOSIGNAL MSG_NOSIGNAL |
| - MSG_MORE = 0x8000 /* Sender will send more. */ |
| -#define MSG_MORE MSG_MORE |
| - }; |
| - |
| - |
| -/* Structure describing messages sent by |
| - `sendmsg' and received by `recvmsg'. */ |
| -/* Note: do not change these members to match glibc; these match the |
| - SuSv3 spec already (e.g. msg_iovlen/msg_controllen). |
| - http://www.opengroup.org/onlinepubs/009695399/basedefs/sys/socket.h.html */ |
| -/* Note: linux kernel uses __kernel_size_t (which is 8bytes on 64bit |
| - platforms, and 4bytes on 32bit platforms) for msg_iovlen/msg_controllen */ |
| -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. */ |
| -#if __WORDSIZE == 32 |
| - int msg_iovlen; /* Number of elements in the vector. */ |
| -#else |
| - size_t msg_iovlen; /* Number of elements in the vector. */ |
| -#endif |
| - |
| - void *msg_control; /* Ancillary data (eg BSD filedesc passing). */ |
| -#if __WORDSIZE == 32 |
| - socklen_t msg_controllen; /* Ancillary data buffer length. */ |
| -#else |
| - size_t msg_controllen; /* Ancillary data buffer length. */ |
| -#endif |
| - |
| - int msg_flags; /* Flags on received message. */ |
| - }; |
| - |
| -/* Structure used for storage of ancillary data object information. */ |
| -struct cmsghdr |
| - { |
| - size_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) \ |
| - & (size_t) ~(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; |
| -libc_hidden_proto(__cmsg_nxthdr) |
| -#ifdef __USE_EXTERN_INLINES |
| -# ifndef _EXTERN_INLINE |
| -# define _EXTERN_INLINE extern __inline |
| -# endif |
| -_EXTERN_INLINE struct cmsghdr * |
| -__NTH (__cmsg_nxthdr (struct msghdr *__mhdr, struct cmsghdr *__cmsg)) |
| -{ |
| - 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 |
| -#ifdef __USE_BSD |
| - , SCM_CREDENTIALS = 0x02 /* Credentials passing. */ |
| -# define SCM_CREDENTIALS SCM_CREDENTIALS |
| -#endif |
| - }; |
| - |
| -/* User visible structure for SCM_CREDENTIALS message */ |
| - |
| -struct ucred |
| -{ |
| - pid_t pid; /* PID of sending process. */ |
| - uid_t uid; /* UID of sending process. */ |
| - gid_t gid; /* GID of sending process. */ |
| -}; |
| - |
| -/* Get socket manipulation related informations from kernel headers. */ |
| -#ifndef __GLIBC__ |
| -#define __GLIBC__ 2 |
| -#include <asm/socket.h> |
| -#undef __GLIBC__ |
| -#else |
| -#include <asm/socket.h> |
| -#endif |
| - |
| - |
| -/* Structure used to manipulate the SO_LINGER option. */ |
| -struct linger |
| - { |
| - int l_onoff; /* Nonzero to linger on close. */ |
| - int l_linger; /* Time to linger. */ |
| - }; |
| - |
| -/* Prefer socketcall over all these for sparc32, |
| - since it only has socketcall */ |
| -#ifndef __arch64__ |
| - #undef __NR_accept |
| - #undef __NR_bind |
| - #undef __NR_connect |
| - #undef __NR_getpeername |
| - #undef __NR_getsockname |
| - #undef __NR_getsockopt |
| - #undef __NR_listen |
| - #undef __NR_recv |
| - #undef __NR_recvfrom |
| - #undef __NR_recvmsg |
| - #undef __NR_send |
| - #undef __NR_sendmsg |
| - #undef __NR_sendto |
| - #undef __NR_setsockopt |
| - #undef __NR_shutdown |
| - #undef __NR_socket |
| - #undef __NR_socketpair |
| -#endif |
| - |
| -#endif /* bits/socket.h */ |
| diff --git a/libc/sysdeps/linux/sparc/bits/socket_type.h b/libc/sysdeps/linux/sparc/bits/socket_type.h |
| new file mode 100644 |
| index 0000000..494655f |
| --- /dev/null |
| +++ b/libc/sysdeps/linux/sparc/bits/socket_type.h |
| @@ -0,0 +1,54 @@ |
| +/* System-specific socket constants and types. Linux version. |
| + Copyright (C) 1991,1992,1994-2001,2004,2006 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, see |
| + <http://www.gnu.org/licenses/>. */ |
| + |
| +#ifndef _SYS_SOCKET_H |
| +# error "Never include <bits/socket_type.h> directly; use <sys/socket.h> instead." |
| +#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_DCCP = 6, /* Datagram Congestion Control Protocol. */ |
| +#define SOCK_DCCP SOCK_DCCP |
| + SOCK_PACKET = 10, /* Linux specific way of getting packets |
| + at the dev level. For writing rarp and |
| + other similar things on the user level. */ |
| +#define SOCK_PACKET SOCK_PACKET |
| + |
| + /* Flags to be ORed into the type parameter of socket and socketpair. */ |
| + |
| + SOCK_CLOEXEC = 0x400000, /* Atomically set close-on-exec flag for the |
| + new descriptor(s). */ |
| +#define SOCK_CLOEXEC SOCK_CLOEXEC |
| + SOCK_NONBLOCK = 0x004000 /* Atomically mark descriptor(s) as |
| + non-blocking. */ |
| +#define SOCK_NONBLOCK SOCK_NONBLOCK |
| +}; |
| -- |
| 1.7.10.4 |
| |