* [PATCH] linux-user: Drop open-coded fcntl flags conversion in eventfd2 syscall
@ 2020-04-24 20:48 Helge Deller
2020-04-24 21:49 ` Richard Henderson
2020-04-25 8:26 ` Laurent Vivier
0 siblings, 2 replies; 3+ messages in thread
From: Helge Deller @ 2020-04-24 20:48 UTC (permalink / raw)
To: Riku Voipio, Laurent Vivier, qemu-devel
Drop the open-coded fcntl flags conversion in the eventfd2 syscall and
replace it with the built-in conversion with fcntl_flags_tbl.
Signed-off-by: Helge Deller <deller@gmx.de>
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 05f03919ff..ebf0d38321 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -11938,13 +11942,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
#if defined(TARGET_NR_eventfd2)
case TARGET_NR_eventfd2:
{
- 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;
- }
+ int host_flags = target_to_host_bitmask(arg2, fcntl_flags_tbl);
ret = get_errno(eventfd(arg1, host_flags));
if (ret >= 0) {
fd_trans_register(ret, &target_eventfd_trans);
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] linux-user: Drop open-coded fcntl flags conversion in eventfd2 syscall
2020-04-24 20:48 [PATCH] linux-user: Drop open-coded fcntl flags conversion in eventfd2 syscall Helge Deller
@ 2020-04-24 21:49 ` Richard Henderson
2020-04-25 8:26 ` Laurent Vivier
1 sibling, 0 replies; 3+ messages in thread
From: Richard Henderson @ 2020-04-24 21:49 UTC (permalink / raw)
To: Helge Deller, Riku Voipio, Laurent Vivier, qemu-devel
On 4/24/20 1:48 PM, Helge Deller wrote:
> Drop the open-coded fcntl flags conversion in the eventfd2 syscall and
> replace it with the built-in conversion with fcntl_flags_tbl.
>
> Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] linux-user: Drop open-coded fcntl flags conversion in eventfd2 syscall
2020-04-24 20:48 [PATCH] linux-user: Drop open-coded fcntl flags conversion in eventfd2 syscall Helge Deller
2020-04-24 21:49 ` Richard Henderson
@ 2020-04-25 8:26 ` Laurent Vivier
1 sibling, 0 replies; 3+ messages in thread
From: Laurent Vivier @ 2020-04-25 8:26 UTC (permalink / raw)
To: Helge Deller, Riku Voipio, qemu-devel
Le 24/04/2020 à 22:48, Helge Deller a écrit :
> Drop the open-coded fcntl flags conversion in the eventfd2 syscall and
> replace it with the built-in conversion with fcntl_flags_tbl.
>
> Signed-off-by: Helge Deller <deller@gmx.de>
>
> diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> index 05f03919ff..ebf0d38321 100644
> --- a/linux-user/syscall.c
> +++ b/linux-user/syscall.c
> @@ -11938,13 +11942,7 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
> #if defined(TARGET_NR_eventfd2)
> case TARGET_NR_eventfd2:
> {
> - 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;
> - }
> + int host_flags = target_to_host_bitmask(arg2, fcntl_flags_tbl);
> ret = get_errno(eventfd(arg1, host_flags));
> if (ret >= 0) {
> fd_trans_register(ret, &target_eventfd_trans);
>
The problem here is eventfd2 doesn't take O_ flags but EFD_ flags.
Most EFD_ flags are mapped to O_ flags, but one is not:
include/linux/eventfd.h:
/*
* CAREFUL: Check include/uapi/asm-generic/fcntl.h when defining
* new flags, since they might collide with O_* ones. We want
* to re-use O_* flags that couldn't possibly have a meaning
* from eventfd, in order to leave a free define-space for
* shared O_* flags.
*/
#define EFD_SEMAPHORE (1 << 0)
#define EFD_CLOEXEC O_CLOEXEC
#define EFD_NONBLOCK O_NONBLOCK
So I think it's better to convert them manually
Perhaps we can defined TARGET_EFD_ flags to make this clearer, I don't know.
Thanks,
Laurent
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-04-25 8:27 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-24 20:48 [PATCH] linux-user: Drop open-coded fcntl flags conversion in eventfd2 syscall Helge Deller
2020-04-24 21:49 ` Richard Henderson
2020-04-25 8:26 ` Laurent Vivier
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.