In article <c8481ddb-d284-3dfd-1b79-5271e987d...@gmx.com>, Kamil Rytarowski <n...@gmx.com> wrote: >-=-=-=-=-=- >-=-=-=-=-=- > >On 25.12.2017 16:37, Kamil Rytarowski wrote: >> On 24.12.2017 22:25, Kamil Rytarowski wrote: >>> I propose to deprecate SYS_pipe. >>> >>> It is a special syscall that returns two integers from one function >>> call. Fanciness is not compatible with regular C syntax and it demands >>> per-cpu assembly wrappers and rump-kernel workarounds. It's not easily >>> usable with syscall(2). >>> >>> OpenBSD and FreeBSD already deprecated this traditional pipe(2) syscall >>> replacing it with a more portable equivalent in C. >>> >>> Changes: >>> - I've marked pipe(2) as compat_80. >>> - I've removed generation of garbage in retval[2] from pipe2(2). >>> - I've reimplemented in C the pipe(2) syscall with pipe2(2). >>> - I've adjusted the surrounding code for the changes. >>> >>> http://netbsd.org/~kamil/patch-00039-obsolete-SYS_pipe.txt >>> >> >> I've extracted two patches from the above proposal. >> >> In these patches SYS_pipe is not marked COMPAT_80 and not removed from >> rump. I've left it as it is. >> >> 1. Implement pipe() with pipe2(2) in libc: >> >> New source code is now Machine Independent. >> >> http://netbsd.org/~kamil/patch-00040-implement-pipe-with-pipe2-in-libc.txt >> >> The generated code in libc for x86_64 is also simpler and shorter: >> >> 000000000008b2a2 <_pipe>: >> 8b2a2: 31 f6 xor %esi,%esi >> 8b2a4: e9 b7 f5 fa ff jmpq 3a860 <pipe2@plt> >> >> 2. Refactor pipe1() kernel-internal function to operate over int[2] >> rather than register_t[2]. Stop returning garbage through retval[2] from >> pipe2(2). >> > >http://netbsd.org/~kamil/patch-00041-refactor-pipe1.txt
That looks good too (the code is simpler). christos