Message ID | YtbZ2ojisTnzxN9Y@p100 (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] linux-user: Unconditionally use pipe2() syscall | expand |
Le 19/07/2022 à 18:20, Helge Deller a écrit : > 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> > --- > Changes in v2: > - added Reviewed-by: from Peter > - new diff against git head > - no functional changes > > > diff --git a/linux-user/syscall.c b/linux-user/syscall.c > index 991b85e6b4..4f89184d05 100644 > --- a/linux-user/syscall.c > +++ b/linux-user/syscall.c > @@ -1586,21 +1586,12 @@ static abi_long do_ppoll(abi_long arg1, abi_long arg2, abi_long arg3, > } > #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, > int flags, int is_pipe2) > { > int host_pipe[2]; > abi_long ret; > - ret = flags ? do_pipe2(host_pipe, flags) : pipe(host_pipe); > + ret = pipe2(host_pipe, flags); > > if (is_error(ret)) > return get_errno(ret); > diff --git a/meson.build b/meson.build > index 8a8c415fc1..75aaca8462 100644 > --- a/meson.build > +++ b/meson.build > @@ -2026,15 +2026,6 @@ config_host_data.set('CONFIG_OPEN_BY_HANDLE', cc.links(gnu_source_prefix + ''' > #else > int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } > #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 + ''' > #include <sys/mman.h> > #include <stddef.h> Applied to my linux-user-for-7.1 branch. Thanks, Laurent
diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 991b85e6b4..4f89184d05 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -1586,21 +1586,12 @@ static abi_long do_ppoll(abi_long arg1, abi_long arg2, abi_long arg3, } #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, int flags, int is_pipe2) { int host_pipe[2]; abi_long ret; - ret = flags ? do_pipe2(host_pipe, flags) : pipe(host_pipe); + ret = pipe2(host_pipe, flags); if (is_error(ret)) return get_errno(ret); diff --git a/meson.build b/meson.build index 8a8c415fc1..75aaca8462 100644 --- a/meson.build +++ b/meson.build @@ -2026,15 +2026,6 @@ config_host_data.set('CONFIG_OPEN_BY_HANDLE', cc.links(gnu_source_prefix + ''' #else int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } #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 + ''' #include <sys/mman.h> #include <stddef.h>