diff options
| -rw-r--r-- | arch/i386/bits/ioctl.h | 7 | ||||
| -rw-r--r-- | arch/i386/syscall.h | 21 | ||||
| -rw-r--r-- | src/network/accept.c | 4 | ||||
| -rw-r--r-- | src/network/bind.c | 4 | ||||
| -rw-r--r-- | src/network/connect.c | 4 | ||||
| -rw-r--r-- | src/network/getpeername.c | 4 | ||||
| -rw-r--r-- | src/network/getsockname.c | 4 | ||||
| -rw-r--r-- | src/network/getsockopt.c | 8 | ||||
| -rw-r--r-- | src/network/listen.c | 4 | ||||
| -rw-r--r-- | src/network/recv.c | 8 | ||||
| -rw-r--r-- | src/network/recvfrom.c | 7 | ||||
| -rw-r--r-- | src/network/recvmsg.c | 4 | ||||
| -rw-r--r-- | src/network/send.c | 8 | ||||
| -rw-r--r-- | src/network/sendmsg.c | 4 | ||||
| -rw-r--r-- | src/network/sendto.c | 7 | ||||
| -rw-r--r-- | src/network/setsockopt.c | 4 | ||||
| -rw-r--r-- | src/network/shutdown.c | 4 | ||||
| -rw-r--r-- | src/network/sockatmark.c | 1 | ||||
| -rw-r--r-- | src/network/socket.c | 4 | ||||
| -rw-r--r-- | src/network/socketcall.h | 24 | ||||
| -rw-r--r-- | src/network/socketpair.c | 4 | 
21 files changed, 45 insertions, 94 deletions
| diff --git a/arch/i386/bits/ioctl.h b/arch/i386/bits/ioctl.h index 544bbdce..336c71c3 100644 --- a/arch/i386/bits/ioctl.h +++ b/arch/i386/bits/ioctl.h @@ -127,6 +127,13 @@ struct winsize {  #define N_SYNC_PPP      14  #define N_HCI           15 +#define FIOSETOWN       0x8901 +#define SIOCSPGRP       0x8902 +#define FIOGETOWN       0x8903 +#define SIOCGPGRP       0x8904 +#define SIOCATMARK      0x8905 +#define SIOCGSTAMP      0x8906 +  #define SIOCADDRT       0x890B  #define SIOCDELRT       0x890C  #define SIOCRTMSG       0x890D diff --git a/arch/i386/syscall.h b/arch/i386/syscall.h index 114aa688..fcdae241 100644 --- a/arch/i386/syscall.h +++ b/arch/i386/syscall.h @@ -501,6 +501,27 @@ static inline long syscall6(long n, long a1, long a2, long a3, long a4, long a5,  #define __NR_pread __NR_pread64  #define __NR_pwrite __NR_pwrite64 +#define __SC_socket      1 +#define __SC_bind        2 +#define __SC_connect     3 +#define __SC_listen      4 +#define __SC_accept      5 +#define __SC_getsockname 6 +#define __SC_getpeername 7 +#define __SC_socketpair  8 +#define __SC_send        9 +#define __SC_recv        10 +#define __SC_sendto      11 +#define __SC_recvfrom    12 +#define __SC_shutdown    13 +#define __SC_setsockopt  14 +#define __SC_getsockopt  15 +#define __SC_sendmsg     16 +#define __SC_recvmsg     17 + + +#define socketcall(nm, a, b, c, d, e, f) syscall2(__NR_socketcall, __SC_##nm, \ +    (long)(long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f })  #undef O_LARGEFILE diff --git a/src/network/accept.c b/src/network/accept.c index 83704096..46adff5c 100644 --- a/src/network/accept.c +++ b/src/network/accept.c @@ -1,14 +1,12 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  #include "libc.h"  int accept(int fd, struct sockaddr *addr, socklen_t *len)  { -	unsigned long args[] = { fd, (unsigned long)addr, (unsigned long)len };  	int ret;  	CANCELPT_BEGIN; -	ret = syscall2(__NR_socketcall, SYS_ACCEPT, (long)args); +	ret = socketcall(accept, fd, addr, len, 0, 0, 0);  	CANCELPT_END;  	return ret;  } diff --git a/src/network/bind.c b/src/network/bind.c index 3bef382c..07bb669a 100644 --- a/src/network/bind.c +++ b/src/network/bind.c @@ -1,9 +1,7 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  int bind(int fd, const struct sockaddr *addr, socklen_t len)  { -	unsigned long args[] = { fd, (unsigned long)addr, len }; -	return syscall2(__NR_socketcall, SYS_BIND, (long)args); +	return socketcall(bind, fd, addr, len, 0, 0, 0);  } diff --git a/src/network/connect.c b/src/network/connect.c index 6074122e..29bffbcb 100644 --- a/src/network/connect.c +++ b/src/network/connect.c @@ -1,14 +1,12 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  #include "libc.h"  int connect(int fd, const struct sockaddr *addr, socklen_t len)  { -	unsigned long args[] = { fd, (unsigned long)addr, len };  	int ret;  	CANCELPT_BEGIN; -	ret = syscall2(__NR_socketcall, SYS_CONNECT, (long)args); +	ret = socketcall(connect, fd, addr, len, 0, 0, 0);  	CANCELPT_END;  	return ret;  } diff --git a/src/network/getpeername.c b/src/network/getpeername.c index 7ecbe375..22effdae 100644 --- a/src/network/getpeername.c +++ b/src/network/getpeername.c @@ -1,9 +1,7 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  int getpeername(int fd, struct sockaddr *addr, socklen_t *len)  { -	unsigned long args[] = { fd, (unsigned long)addr, (unsigned long)len }; -	return syscall2(__NR_socketcall, SYS_GETPEERNAME, (long)args); +	return socketcall(getpeername, fd, addr, len, 0, 0, 0);  } diff --git a/src/network/getsockname.c b/src/network/getsockname.c index 4b1002f8..271e3b41 100644 --- a/src/network/getsockname.c +++ b/src/network/getsockname.c @@ -1,9 +1,7 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  int getsockname(int fd, struct sockaddr *addr, socklen_t *len)  { -	unsigned long args[] = { fd, (unsigned long)addr, (unsigned long)len }; -	return syscall2(__NR_socketcall, SYS_GETSOCKNAME, (long)args); +	return socketcall(getsockname, fd, addr, len, 0, 0, 0);  } diff --git a/src/network/getsockopt.c b/src/network/getsockopt.c index 8c818863..a9e0a72d 100644 --- a/src/network/getsockopt.c +++ b/src/network/getsockopt.c @@ -1,13 +1,7 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  int getsockopt(int fd, int level, int optname, void *optval, socklen_t *optlen)  { -	unsigned long args[] = { -		fd, level, optname, -		(unsigned long)optval, -		(unsigned long)optlen -	}; -	return syscall2(__NR_socketcall, SYS_GETSOCKOPT, (long)args); +	return socketcall(getsockopt, fd, level, optname, optval, optlen, 0);  } diff --git a/src/network/listen.c b/src/network/listen.c index 7c8c1a8a..f84ad03b 100644 --- a/src/network/listen.c +++ b/src/network/listen.c @@ -1,9 +1,7 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  int listen(int fd, int backlog)  { -	unsigned long args[] = { fd, backlog }; -	return syscall2(__NR_socketcall, SYS_LISTEN, (long)args); +	return socketcall(listen, fd, backlog, 0, 0, 0, 0);  } diff --git a/src/network/recv.c b/src/network/recv.c index 521a4b19..d04a54aa 100644 --- a/src/network/recv.c +++ b/src/network/recv.c @@ -1,14 +1,8 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  #include "libc.h"  ssize_t recv(int fd, void *buf, size_t len, int flags)  { -	unsigned long args[] = { fd, (unsigned long)buf, len, flags }; -	ssize_t r; -	CANCELPT_BEGIN; -	r = syscall2(__NR_socketcall, SYS_RECV, (long)args); -	CANCELPT_END; -	return r; +	return recvfrom(fd, buf, len, flags, 0, 0);  } diff --git a/src/network/recvfrom.c b/src/network/recvfrom.c index df50114b..d5222932 100644 --- a/src/network/recvfrom.c +++ b/src/network/recvfrom.c @@ -1,17 +1,12 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  #include "libc.h"  ssize_t recvfrom(int fd, void *buf, size_t len, int flags, struct sockaddr *addr, socklen_t *alen)  { -	unsigned long args[] = { -		fd, (unsigned long)buf, len, flags, -		(unsigned long)addr, (unsigned long)alen -	};  	ssize_t r;  	CANCELPT_BEGIN; -	r = syscall2(__NR_socketcall, SYS_RECVFROM, (long)args); +	r = socketcall(recvfrom, fd, buf, len, flags, addr, alen);  	CANCELPT_END;  	return r;  } diff --git a/src/network/recvmsg.c b/src/network/recvmsg.c index ead16f9c..edc5f241 100644 --- a/src/network/recvmsg.c +++ b/src/network/recvmsg.c @@ -1,14 +1,12 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  #include "libc.h"  ssize_t recvmsg(int fd, struct msghdr *msg, int flags)  { -	unsigned long args[] = { fd, (unsigned long)msg, flags };  	ssize_t r;  	CANCELPT_BEGIN; -	r = syscall2(__NR_socketcall, SYS_RECVMSG, (long)args); +	r = socketcall(recvmsg, fd, msg, flags, 0, 0, 0);  	CANCELPT_END;  	return r;  } diff --git a/src/network/send.c b/src/network/send.c index d72fb03c..b6ec3101 100644 --- a/src/network/send.c +++ b/src/network/send.c @@ -1,14 +1,8 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  #include "libc.h"  ssize_t send(int fd, const void *buf, size_t len, int flags)  { -	unsigned long args[] = { fd, (unsigned long)buf, len, flags }; -	ssize_t r; -	CANCELPT_BEGIN; -	r = syscall2(__NR_socketcall, SYS_SEND, (long)args); -	CANCELPT_END; -	return r; +	return sendto(fd, buf, len, flags, 0, 0);  } diff --git a/src/network/sendmsg.c b/src/network/sendmsg.c index ea2fe482..5d1123f0 100644 --- a/src/network/sendmsg.c +++ b/src/network/sendmsg.c @@ -1,14 +1,12 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  #include "libc.h"  ssize_t sendmsg(int fd, const struct msghdr *msg, int flags)  { -	unsigned long args[] = { fd, (unsigned long)msg, flags };  	ssize_t r;  	CANCELPT_BEGIN; -	r = syscall2(__NR_socketcall, SYS_SENDMSG, (long)args); +	r = socketcall(sendmsg, fd, msg, flags, 0, 0, 0);  	CANCELPT_END;  	return r;  } diff --git a/src/network/sendto.c b/src/network/sendto.c index 5d224b0b..1cfc621d 100644 --- a/src/network/sendto.c +++ b/src/network/sendto.c @@ -1,17 +1,12 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  #include "libc.h"  ssize_t sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *addr, socklen_t alen)  { -	unsigned long args[] = { -		fd, (unsigned long)buf, len, flags, -		(unsigned long)addr, alen -	};  	ssize_t r;  	CANCELPT_BEGIN; -	r = syscall2(__NR_socketcall, SYS_SENDTO, (long)args); +	r = socketcall(sendto, fd, buf, len, flags, addr, alen);  	CANCELPT_END;  	return r;  } diff --git a/src/network/setsockopt.c b/src/network/setsockopt.c index b50303b8..c960c9ca 100644 --- a/src/network/setsockopt.c +++ b/src/network/setsockopt.c @@ -1,9 +1,7 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  int setsockopt(int fd, int level, int optname, const void *optval, socklen_t optlen)  { -	unsigned long args[] = { fd, level, optname, (unsigned long)optval, optlen }; -	return syscall2(__NR_socketcall, SYS_SETSOCKOPT, (long)args); +	return socketcall(setsockopt, fd, level, optname, optval, optlen, 0);  } diff --git a/src/network/shutdown.c b/src/network/shutdown.c index 91950c8a..10ca21aa 100644 --- a/src/network/shutdown.c +++ b/src/network/shutdown.c @@ -1,9 +1,7 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  int shutdown(int fd, int how)  { -	unsigned long args[] = { fd, how }; -	return syscall2(__NR_socketcall, SYS_SHUTDOWN, (long)args); +	return socketcall(shutdown, fd, how, 0, 0, 0, 0);  } diff --git a/src/network/sockatmark.c b/src/network/sockatmark.c index 5328a855..f474551a 100644 --- a/src/network/sockatmark.c +++ b/src/network/sockatmark.c @@ -1,6 +1,5 @@  #include <sys/socket.h>  #include <sys/ioctl.h> -#include "socketcall.h"  int sockatmark(int s)  { diff --git a/src/network/socket.c b/src/network/socket.c index afaeb411..4f1e86db 100644 --- a/src/network/socket.c +++ b/src/network/socket.c @@ -1,9 +1,7 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  int socket(int domain, int type, int protocol)  { -	unsigned long args[] = { domain, type, protocol }; -	return syscall2(__NR_socketcall, SYS_SOCKET, (long)args); +	return socketcall(socket, domain, type, protocol, 0, 0, 0);  } diff --git a/src/network/socketcall.h b/src/network/socketcall.h deleted file mode 100644 index 9ae98587..00000000 --- a/src/network/socketcall.h +++ /dev/null @@ -1,24 +0,0 @@ -#define SYS_SOCKET      1 -#define SYS_BIND        2 -#define SYS_CONNECT     3 -#define SYS_LISTEN      4 -#define SYS_ACCEPT      5 -#define SYS_GETSOCKNAME 6 -#define SYS_GETPEERNAME 7 -#define SYS_SOCKETPAIR  8 -#define SYS_SEND        9 -#define SYS_RECV        10 -#define SYS_SENDTO      11 -#define SYS_RECVFROM    12 -#define SYS_SHUTDOWN    13 -#define SYS_SETSOCKOPT  14 -#define SYS_GETSOCKOPT  15 -#define SYS_SENDMSG     16 -#define SYS_RECVMSG     17 - -#define FIOSETOWN       0x8901 -#define SIOCSPGRP       0x8902 -#define FIOGETOWN       0x8903 -#define SIOCGPGRP       0x8904 -#define SIOCATMARK      0x8905 -#define SIOCGSTAMP      0x8906 diff --git a/src/network/socketpair.c b/src/network/socketpair.c index 65a47fd9..b15f8467 100644 --- a/src/network/socketpair.c +++ b/src/network/socketpair.c @@ -1,9 +1,7 @@  #include <sys/socket.h>  #include "syscall.h" -#include "socketcall.h"  int socketpair(int domain, int type, int protocol, int fd[2])  { -	unsigned long args[] = { domain, type, protocol, (unsigned long)fd }; -	return syscall2(__NR_socketcall, SYS_SOCKETPAIR, (long)args); +	return socketcall(socketpair, domain, type, protocol, fd, 0, 0);  } | 
