aboutsummaryrefslogtreecommitdiff
path: root/src/unistd/pipe2.c (follow)
Commit message (Expand)AuthorAgeFilesLines
* in pipe2, use pipe() rather than __syscall(SYS_pipe, ...) for fallback•••SYS_pipe is not usable directly in general, since mips has a very broken calling convention for the pipe syscall. instead, just call the function, so that the mips-specific ugliness is isolated in mips/pipe.s and not copied elsewhere. Rich Felker2013-03-251-3/+3
* streamline old-kernel fallback path of pipe2 to use syscalls directly•••also, don't waste code/time on F_GETFL since pipes always have blank flags initially (at least on old kernels, which are all this fallback code matters for). Rich Felker2013-02-031-4/+4
* fix double errno-decoding in the old-kernel fallback path of pipe2•••this bug seems to have caused any failure by pipe2 on such systems to set errno to 1, rather than the proper error code. Rich Felker2012-12-111-1/+1
* overhaul system() and popen() to use vfork; fix various related bugs•••since we target systems without overcommit, special care should be taken that system() and popen(), like posix_spawn(), do not fail in processes whose commit charges are too high to allow ordinary forking. this in turn requires special precautions to ensure that the parent process's signal handlers do not end up running in the shared-memory child, where they could corrupt the state of the parent process. popen has also been updated to use pipe2, so it does not have a fd-leak race in multi-threaded programs. since pipe2 is missing on older kernels, (non-atomic) emulation has been added. some silly bugs in the old code should be gone too. Rich Felker2012-10-181-3/+17
* move accept4, dup3, and pipe2 to non-linux-specific locations•••these interfaces have been adopted by the Austin Group for inclusion in the next version of POSIX. Rich Felker2012-09-291-0/+8