@@ -21,11 +21,21 @@
#include <sysdep-cancel.h>
#include <socketcall.h>
+#include <sys/syscall.h>
+#include <kernel-features.h>
+#ifdef __ASSUME_ACCEPT_SYSCALL
+int
+__libc_accept (int fd, __SOCKADDR_ARG addr, socklen_t *len)
+{
+ return SYSCALL_CANCEL (accept, fd, addr.__sockaddr__, len);
+}
+#else
int
__libc_accept (int fd, __SOCKADDR_ARG addr, socklen_t *len)
{
return SOCKETCALL_CANCEL (accept, fd, addr.__sockaddr__, len);
}
+#endif
weak_alias (__libc_accept, accept)
libc_hidden_def (accept)
@@ -20,10 +20,20 @@
#include <sys/socket.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_BIND_SYSCALL
+int
+__bind (int fd, __CONST_SOCKADDR_ARG addr, socklen_t len)
+{
+ return INLINE_SYSCALL (bind, 3, fd, addr.__sockaddr__, len);
+}
+#else
int
__bind (int fd, __CONST_SOCKADDR_ARG addr, socklen_t len)
{
return SOCKETCALL (bind, fd, addr.__sockaddr__, len, 0, 0, 0);
}
+#endif
weak_alias (__bind, bind)
@@ -21,12 +21,22 @@
#include <sysdep-cancel.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_CONNECT_SYSCALL
+int
+__libc_connect (int fd, __CONST_SOCKADDR_ARG addr, socklen_t len)
+{
+ return SYSCALL_CANCEL (connect, fd, addr.__sockaddr__, len);
+}
+#else
int
__libc_connect (int fd, __CONST_SOCKADDR_ARG addr, socklen_t len)
{
return SOCKETCALL_CANCEL (connect, fd, addr.__sockaddr__, len);
}
+#endif
weak_alias (__libc_connect, connect)
weak_alias (__libc_connect, __connect)
libc_hidden_weak (__connect)
@@ -20,10 +20,20 @@
#include <sys/socket.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_GETPEERNAME_SYSCALL
+int
+__getpeername (int fd, __SOCKADDR_ARG addr, socklen_t *len)
+{
+ return INLINE_SYSCALL (getpeername, 3, fd, addr.__sockaddr__, len);
+}
+#else
int
__getpeername (int fd, __SOCKADDR_ARG addr, socklen_t *len)
{
return SOCKETCALL (getpeername, fd, addr.__sockaddr__, len);
}
+#endif
weak_alias (__getpeername, getpeername)
@@ -20,10 +20,20 @@
#include <sys/socket.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_GETSOCKNAME_SYSCALL
+int
+__getsockname (int fd, __SOCKADDR_ARG addr, socklen_t *len)
+{
+ return INLINE_SYSCALL (getsockname, 3, fd, addr.__sockaddr__, len);
+}
+#else
int
__getsockname (int fd, __SOCKADDR_ARG addr, socklen_t *len)
{
return SOCKETCALL (getsockname, fd, addr.__sockaddr__, len);
}
+#endif
weak_alias (__getsockname, getsockname)
@@ -20,10 +20,20 @@
#include <sys/socket.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_GETSOCKOPT_SYSCALL
+int
+__getsockopt (int fd, int level, int optname, void *optval, socklen_t *len)
+{
+ return INLINE_SYSCALL (getsockopt, 5, fd, level, optname, optval, len);
+}
+#else
int
__getsockopt (int fd, int level, int optname, void *optval, socklen_t *len)
{
return SOCKETCALL (getsockopt, fd, level, optname, optval, len);
}
+#endif
weak_alias (__getsockopt, getsockopt)
@@ -20,10 +20,20 @@
#include <sys/socket.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_LISTEN_SYSCALL
+int
+listen (int fd, int backlog)
+{
+ return INLINE_SYSCALL (listen, 2, fd, backlog);
+}
+#else
int
listen (int fd, int backlog)
{
return SOCKETCALL (listen, fd, backlog);
}
+#endif
weak_alias (listen, __listen);
@@ -36,6 +36,27 @@
#endif
#define __ASSUME_SENDMMSG_SYSCALL_WITH_SOCKETCALL 1
+/* New syscalls added for PowerPC in 2.6.37. */
+#if __LINUX_KERNEL_VERSION >= 0x020625
+# define __ASSUME_SOCKET_SYSCALL 1
+# define __ASSUME_BIND_SYSCALL 1
+# define __ASSUME_CONNECT_SYSCALL 1
+# define __ASSUME_LISTEN_SYSCALL 1
+# define __ASSUME_ACCEPT_SYSCALL 1
+# define __ASSUME_GETSOCKNAME_SYSCALL 1
+# define __ASSUME_GETPEERNAME_SYSCALL 1
+# define __ASSUME_SOCKETPAIR_SYSCALL 1
+# define __ASSUME_SEND_SYSCALL 1
+# define __ASSUME_SENDTO_SYSCALL 1
+# define __ASSUME_RECV_SYSCALL 1
+# define __ASSUME_RECVFROM_SYSCALL 1
+# define __ASSUME_SHUTDOWN_SYSCALL 1
+# define __ASSUME_GETSOCKOPT_SYSCALL 1
+# define __ASSUME_SETSOCKOPT_SYSCALL 1
+# define __ASSUME_SENDMSG_SYSCALL 1
+# define __ASSUME_RECVMSG_SYSCALL 1
+#endif
+
#include_next <kernel-features.h>
/* PowerPC64 IPC is always 64-bit and does not use __IPC_64. */
@@ -21,12 +21,22 @@
#include <sysdep-cancel.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_RECV_SYSCALL
+ssize_t
+__libc_recv (int fd, void *buf, size_t len, int flags)
+{
+ return SYSCALL_CANCEL (recv, fd, buf, len, flags);
+}
+#else
ssize_t
__libc_recv (int fd, void *buf, size_t len, int flags)
{
return SOCKETCALL_CANCEL (recv, fd, buf, len, flags);
}
+#endif
weak_alias (__libc_recv, recv)
weak_alias (__libc_recv, __recv)
libc_hidden_weak (__recv)
@@ -21,7 +21,18 @@
#include <sysdep-cancel.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_RECVFROM_SYSCALL
+ssize_t
+__libc_recvfrom (int fd, void *buf, size_t len, int flags,
+ __SOCKADDR_ARG addr, socklen_t *addrlen)
+{
+ return SYSCALL_CANCEL (recvfrom, fd, buf, len, flags, addr.__sockaddr__,
+ addrlen);
+}
+#else
ssize_t
__libc_recvfrom (int fd, void *buf, size_t len, int flags,
__SOCKADDR_ARG addr, socklen_t *addrlen)
@@ -29,5 +40,6 @@ __libc_recvfrom (int fd, void *buf, size_t len, int flags,
return SOCKETCALL_CANCEL (recvfrom, fd, buf, len, flags, addr.__sockaddr__,
addrlen);
}
+#endif
weak_alias (__libc_recvfrom, recvfrom)
weak_alias (__libc_recvfrom, __recvfrom)
@@ -21,11 +21,21 @@
#include <sysdep-cancel.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_RECVMSG_SYSCALL
+ssize_t
+__libc_recvmsg (int fd, struct msghdr *msg, int flags)
+{
+ return SYSCALL_CANCEL (recvmsg, fd, msg, flags);
+}
+#else
ssize_t
__libc_recvmsg (int fd, struct msghdr *msg, int flags)
{
return SOCKETCALL_CANCEL (recvmsg, fd, msg, flags);
}
+#endif
weak_alias (__libc_recvmsg, recvmsg)
weak_alias (__libc_recvmsg, __recvmsg)
@@ -21,12 +21,22 @@
#include <sysdep-cancel.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_SEND_SYSCALL
+ssize_t
+__libc_send (int fd, const void *buf, size_t len, int flags)
+{
+ return SYSCALL_CANCEL (send, fd, buf, len, flags);
+}
+#else
ssize_t
__libc_send (int fd, const void *buf, size_t len, int flags)
{
return SOCKETCALL_CANCEL (send, fd, buf, len, flags);
}
+#endif
weak_alias (__libc_send, send)
weak_alias (__libc_send, __send)
libc_hidden_def (__send)
@@ -21,11 +21,21 @@
#include <sysdep-cancel.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_SENDMSG_SYSCALL
+ssize_t
+__libc_sendmsg (int fd, const struct msghdr *msg, int flags)
+{
+ return SYSCALL_CANCEL (sendmsg, fd, msg, flags);
+}
+#else
ssize_t
__libc_sendmsg (int fd, const struct msghdr *msg, int flags)
{
return SOCKETCALL_CANCEL (sendmsg, fd, msg, flags);
}
+#endif
weak_alias (__libc_sendmsg, sendmsg)
weak_alias (__libc_sendmsg, __sendmsg)
@@ -21,7 +21,18 @@
#include <sysdep-cancel.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_SENDTO_SYSCALL
+ssize_t
+__libc_sendto (int fd, const void *buf, size_t len, int flags,
+ __CONST_SOCKADDR_ARG addr, socklen_t addrlen)
+{
+ return SYSCALL_CANCEL (sendto, fd, buf, len, flags, addr.__sockaddr__,
+ addrlen);
+}
+#else
ssize_t
__libc_sendto (int fd, const void *buf, size_t len, int flags,
__CONST_SOCKADDR_ARG addr, socklen_t addrlen)
@@ -29,5 +40,6 @@ __libc_sendto (int fd, const void *buf, size_t len, int flags,
return SOCKETCALL_CANCEL (sendto, fd, buf, len, flags, addr.__sockaddr__,
addrlen);
}
+#endif
weak_alias (__libc_sendto, sendto)
weak_alias (__libc_sendto, __sendto)
@@ -20,10 +20,20 @@
#include <sys/socket.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_SETSOCKOPT_SYSCALL
+int
+setsockopt (int fd, int level, int optname, const void *optval, socklen_t len)
+{
+ return INLINE_SYSCALL (setsockopt, 5, fd, level, optname, optval, len);
+}
+#else
int
setsockopt (int fd, int level, int optname, const void *optval, socklen_t len)
{
return SOCKETCALL (setsockopt, fd, level, optname, optval, len);
}
+#endif
weak_alias (setsockopt, __setsockopt)
@@ -20,10 +20,20 @@
#include <sys/socket.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_SHUTDOWN_SYSCALL
+int
+__shutdown (int fd, int how)
+{
+ return INLINE_SYSCALL (shutdown, 2, fd, how);
+}
+#else
int
__shutdown (int fd, int how)
{
return SOCKETCALL (shutdown, fd, how);
}
+#endif
weak_alias (__shutdown, shutdown)
@@ -20,11 +20,21 @@
#include <sys/socket.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_SOCKET_SYSCALL
+int
+__socket (int fd, int type, int domain)
+{
+ return INLINE_SYSCALL (socket, 3, fd, type, domain);
+}
+#else
int
__socket (int fd, int type, int domain)
{
return SOCKETCALL (socket, fd, type, domain);
}
+#endif
libc_hidden_def (__socket)
weak_alias (__socket, socket)
@@ -20,10 +20,20 @@
#include <sys/socket.h>
#include <socketcall.h>
+#include <kernel-features.h>
+#include <sys/syscall.h>
+#ifdef __ASSUME_SOCKETPAIR_SYSCALL
+int
+__socketpair (int domain, int type, int protocol, int sv[2])
+{
+ return INLINE_SYSCALL (socketpair, 4, domain, type, protocol, sv);
+}
+#else
int
__socketpair (int domain, int type, int protocol, int sv[2])
{
return SOCKETCALL (socketpair, domain, type, protocol, sv);
}
+#endif
weak_alias (__socketpair, socketpair)