Fixes O_CLOEXEC
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 19 Jan 2015 23:38:01 +0000 (18:38 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 19 Jan 2015 23:38:01 +0000 (18:38 -0500)
commit7a074c218234d0d6b81a7938a6df852af4b8d229
treef784c2205f285a24bea893acd608a7f9cd00342c
parent52cc9b19c6edfc183276b1ebf24af9baea4d20d2
Fixes O_CLOEXEC

O_CLOEXEC, the open flag from glibc (sometimes called the mode in 9ns)
was being saved as a struct file f_flag, instead of on the file
descriptor.  Likewise, fcntl() was doing the same.

To deal with the races that O_CLOEXEC was made for (and which make the
fcntl SETFD option arguably useless) we need to set FD_CLOEXEC
atomically when the FD is inserted into the FD table.  This required
work with both VFS and 9ns.

I'm not sure how inferno/9ns actually handled CLOEXEC, since newfd()
doesn't take any flags.
kern/include/ns.h
kern/include/vfs.h
kern/src/ns/sysfile.c
kern/src/process.c
kern/src/syscall.c
kern/src/vfs.c