linux-user: pass correct host flags to eventfd2 call
This change makes conversion of TARGET_O_NONBLOCK and TARGET_O_CLOEXEC flags to host flags before calling eventfd for TARGET_NR_eventfd2. Signed-off-by: Petar Jovanovic <petar.jovanovic@imgtec.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
183543cdb6
commit
5947c697ce
|
@ -8823,8 +8823,17 @@ abi_long do_syscall(void *cpu_env, int num, abi_long arg1,
|
||||||
#endif
|
#endif
|
||||||
#if defined(TARGET_NR_eventfd2)
|
#if defined(TARGET_NR_eventfd2)
|
||||||
case TARGET_NR_eventfd2:
|
case TARGET_NR_eventfd2:
|
||||||
ret = get_errno(eventfd(arg1, arg2));
|
{
|
||||||
|
int host_flags = arg2 & (~(TARGET_O_NONBLOCK | TARGET_O_CLOEXEC));
|
||||||
|
if (arg2 & TARGET_O_NONBLOCK) {
|
||||||
|
host_flags |= O_NONBLOCK;
|
||||||
|
}
|
||||||
|
if (arg2 & TARGET_O_CLOEXEC) {
|
||||||
|
host_flags |= O_CLOEXEC;
|
||||||
|
}
|
||||||
|
ret = get_errno(eventfd(arg1, host_flags));
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
#endif /* CONFIG_EVENTFD */
|
#endif /* CONFIG_EVENTFD */
|
||||||
#if defined(CONFIG_FALLOCATE) && defined(TARGET_NR_fallocate)
|
#if defined(CONFIG_FALLOCATE) && defined(TARGET_NR_fallocate)
|
||||||
|
|
Loading…
Reference in New Issue