summaryrefslogtreecommitdiffstats
path: root/sys/compat
diff options
context:
space:
mode:
authordchagin <dchagin@FreeBSD.org>2009-06-01 20:48:39 +0000
committerdchagin <dchagin@FreeBSD.org>2009-06-01 20:48:39 +0000
commitbb8f1f3e67af8643881e71a4d80d6580ba2aa43a (patch)
treed6f838060e9d29ba5458e3d844625bab9dc12634 /sys/compat
parent76d24c5be3b678fc63b8b3b0cd9fad664c2303ca (diff)
downloadFreeBSD-src-bb8f1f3e67af8643881e71a4d80d6580ba2aa43a.zip
FreeBSD-src-bb8f1f3e67af8643881e71a4d80d6580ba2aa43a.tar.gz
Implement accept4 syscall.
Approved by: kib (mentor) MFC after: 1 month
Diffstat (limited to 'sys/compat')
-rw-r--r--sys/compat/linux/linux_socket.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/sys/compat/linux/linux_socket.c b/sys/compat/linux/linux_socket.c
index 176a7213..cb7e0f8 100644
--- a/sys/compat/linux/linux_socket.c
+++ b/sys/compat/linux/linux_socket.c
@@ -825,6 +825,21 @@ linux_accept(struct thread *td, struct linux_accept_args *args)
args->namelen));
}
+struct linux_accept4_args {
+ int s;
+ l_uintptr_t addr;
+ l_uintptr_t namelen;
+ int flags;
+};
+
+static int
+linux_accept4(struct thread *td, struct linux_accept4_args *args)
+{
+
+ return (linux_accept_common(td, args->s, args->addr,
+ args->namelen, args->flags));
+}
+
struct linux_getsockname_args {
int s;
l_uintptr_t addr;
@@ -1528,7 +1543,8 @@ static const unsigned char lxs_args[] = {
LINUX_AL(4) /* recv */, LINUX_AL(6) /* sendto */,
LINUX_AL(6) /* recvfrom */, LINUX_AL(2) /* shutdown */,
LINUX_AL(5) /* setsockopt */, LINUX_AL(5) /* getsockopt */,
- LINUX_AL(3) /* sendmsg */, LINUX_AL(3) /* recvmsg */
+ LINUX_AL(3) /* sendmsg */, LINUX_AL(3) /* recvmsg */,
+ LINUX_AL(4) /* accept4 */
};
#define LINUX_AL_SIZE sizeof(lxs_args) / sizeof(lxs_args[0]) - 1
@@ -1582,6 +1598,8 @@ linux_socketcall(struct thread *td, struct linux_socketcall_args *args)
return (linux_sendmsg(td, arg));
case LINUX_RECVMSG:
return (linux_recvmsg(td, arg));
+ case LINUX_ACCEPT4:
+ return (linux_accept4(td, arg));
}
uprintf("LINUX: 'socket' typ=%d not implemented\n", args->what);
OpenPOWER on IntegriCloud