linux-user: Unconditionally use pipe2() syscall

The pipe2() syscall is available on all Linux platforms since kernel
2.6.27, so use it unconditionally to emulate pipe() and pipe2().

Signed-off-by: Helge Deller <deller@gmx.de>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <YtbZ2ojisTnzxN9Y@p100>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
Helge Deller 2022-07-19 18:20:42 +02:00 committed by Laurent Vivier
parent bd4b7fd6ba
commit 499d805537
2 changed files with 1 additions and 19 deletions

View File

@ -1586,21 +1586,12 @@ static abi_long do_ppoll(abi_long arg1, abi_long arg2, abi_long arg3,
} }
#endif #endif
static abi_long do_pipe2(int host_pipe[], int flags)
{
#ifdef CONFIG_PIPE2
return pipe2(host_pipe, flags);
#else
return -ENOSYS;
#endif
}
static abi_long do_pipe(CPUArchState *cpu_env, abi_ulong pipedes, static abi_long do_pipe(CPUArchState *cpu_env, abi_ulong pipedes,
int flags, int is_pipe2) int flags, int is_pipe2)
{ {
int host_pipe[2]; int host_pipe[2];
abi_long ret; abi_long ret;
ret = flags ? do_pipe2(host_pipe, flags) : pipe(host_pipe); ret = pipe2(host_pipe, flags);
if (is_error(ret)) if (is_error(ret))
return get_errno(ret); return get_errno(ret);

View File

@ -2026,15 +2026,6 @@ config_host_data.set('CONFIG_OPEN_BY_HANDLE', cc.links(gnu_source_prefix + '''
#else #else
int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
#endif''')) #endif'''))
config_host_data.set('CONFIG_PIPE2', cc.links(gnu_source_prefix + '''
#include <unistd.h>
#include <fcntl.h>
int main(void)
{
int pipefd[2];
return pipe2(pipefd, O_CLOEXEC);
}'''))
config_host_data.set('CONFIG_POSIX_MADVISE', cc.links(gnu_source_prefix + ''' config_host_data.set('CONFIG_POSIX_MADVISE', cc.links(gnu_source_prefix + '''
#include <sys/mman.h> #include <sys/mman.h>
#include <stddef.h> #include <stddef.h>