[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 099/108] linux-user: Split out signalfd, signalfd
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v2 099/108] linux-user: Split out signalfd, signalfd4 |
Date: |
Sat, 9 Jun 2018 17:02:11 -1000 |
All targets define signalfd4; remove the ifdefs.
In do_signalfd4, unlock the target sigmask earlier and use is_error.
Signed-off-by: Richard Henderson <address@hidden>
---
linux-user/syscall.c | 34 ++++++++++++++++++----------------
1 file changed, 18 insertions(+), 16 deletions(-)
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 5edcb39b73..e630a43f97 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6975,8 +6975,6 @@ static abi_long host_to_target_statfs64(abi_ulong
target_addr,
}
#endif
-#if defined(TARGET_NR_signalfd) || defined(TARGET_NR_signalfd4)
-
/* signalfd siginfo conversion */
static void
@@ -7045,21 +7043,17 @@ static abi_long do_signalfd4(int fd, abi_long mask, int
flags)
if (!lock_user_struct(VERIFY_READ, target_mask, mask, 1)) {
return -TARGET_EFAULT;
}
-
target_to_host_sigset(&host_mask, target_mask);
+ unlock_user_struct(target_mask, mask, 0);
host_flags = target_to_host_bitmask(flags, fcntl_flags_tbl);
ret = get_errno(signalfd(fd, &host_mask, host_flags));
- if (ret >= 0) {
+ if (!is_error(ret)) {
fd_trans_register(ret, &target_signalfd_trans);
}
-
- unlock_user_struct(target_mask, mask, 0);
-
return ret;
}
-#endif
/* Map host to target signal numbers for the wait family of syscalls.
Assume all other status bits are the same. */
@@ -11884,6 +11878,18 @@ IMPL(sigaltstack)
return do_sigaltstack(arg1, arg2, get_sp_from_cpustate(cpu_env));
}
+#ifdef TARGET_NR_signalfd
+IMPL(signalfd)
+{
+ return do_signalfd4(arg1, arg2, 0);
+}
+#endif
+
+IMPL(signalfd4)
+{
+ return do_signalfd4(arg1, arg2, arg4);
+}
+
#ifdef TARGET_NR_sigpending
IMPL(sigpending)
{
@@ -12850,14 +12856,6 @@ static abi_long do_syscall1(void *cpu_env, unsigned
num, abi_long arg1,
abi_long ret;
switch(num) {
-#if defined(TARGET_NR_signalfd4)
- case TARGET_NR_signalfd4:
- return do_signalfd4(arg1, arg2, arg4);
-#endif
-#if defined(TARGET_NR_signalfd)
- case TARGET_NR_signalfd:
- return do_signalfd4(arg1, arg2, 0);
-#endif
#if defined(CONFIG_EPOLL)
#if defined(TARGET_NR_epoll_create)
case TARGET_NR_epoll_create:
@@ -13808,6 +13806,10 @@ static impl_fn *syscall_table(unsigned num)
SYSCALL(sigaction);
#endif
SYSCALL(sigaltstack);
+#ifdef TARGET_NR_signalfd
+ SYSCALL(signalfd);
+#endif
+ SYSCALL(signalfd4);
#ifdef TARGET_NR_sigpending
SYSCALL(sigpending);
#endif
--
2.17.1
- [Qemu-devel] [PATCH v2 089/108] linux-user: Split out clock syscalls, (continued)
- [Qemu-devel] [PATCH v2 089/108] linux-user: Split out clock syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 090/108] linux-user: Fix clock_nanosleep, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 088/108] linux-user: Split out getdomainname, get_thread_area, set_thread_area, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 091/108] linux-user: Split out set_tid_address, tgkill, tkill, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 092/108] linux-user: Split out futex, utimensat, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 093/108] linux-user: Remove sys_futex, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 094/108] linux-user: Split out inotify syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 095/108] linux-user: Split out mq syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 096/108] linux-user: Split out splice, tee, vmsplice, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 097/108] linux-user: Split out eventfd, eventfd2, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 099/108] linux-user: Split out signalfd, signalfd4,
Richard Henderson <=
- [Qemu-devel] [PATCH v2 098/108] linux-user: Split out fallocate, sync_file_range/2, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 100/108] linux-user: Split out epoll syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 101/108] linux-user: Split out prlimit64, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 102/108] linux-user: Split out atomic_barrier, gethostname, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 103/108] linux-user: Split out atomic_cmpxchg_32, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 104/108] linux-user: Split out timer syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 105/108] linux-user: Split out timerfd syscalls, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 106/108] linux-user: Split out ioprio_get, ioprio_set, kcmp, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 107/108] linux-user: Split out setns, unshare, Richard Henderson, 2018/06/09
- [Qemu-devel] [PATCH v2 108/108] linux-user: Fold away do_syscall1, Richard Henderson, 2018/06/09