net: socket: Support SOCK_CLOEXEC (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 24 Feb 2017 20:56:22 +0000 (15:56 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 2 Mar 2017 18:01:29 +0000 (13:01 -0500)
commit34f56f6df5f17bab28c11c7a43b9b1dc273a4a58
tree0ccd4d842e0a14ab8954e85ad4bca53ed899541a
parent88e536c2e0ba4f49675dc0cea7a2078ade48d869
net: socket: Support SOCK_CLOEXEC (XCC)

If a socket is marked SOCK_CLOEXEC, then the intention is that none of that
socket's FDs (the socket itself, any listen files, ctls, etc) will get
passed on to its child after exec().

Note that accept() does not pass on CLOEXEC, yet.  The NONBLOCK was for the
attempt, which was when we were the parent socket.  The actual ctl that we
get in return is the child socket, which is controlled by accept4() (TBD).

Although I want to get rid of exec(), in the meantime, we should attempt to
support it.

While I was here, I added a helper for opening a Rock's ctlfd (a common
pattern), and supported NONBLOCK for pipes.

Rebuild glibc.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/accept.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/bind.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/connect.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/listen.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/pipe2.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/plan9_sockets.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/shutdown.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/socket.c
tools/compilers/gcc-glibc/glibc-2.19-akaros/sysdeps/akaros/sys/plan9_helpers.h