Make O_RDONLY non-zero (XCC) [1/7]
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 3 Sep 2015 21:17:59 +0000 (17:17 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 28 Sep 2015 19:14:00 +0000 (15:14 -0400)
commit3b97c7f71f69de43dda9a9282197b4ca40d8a055
tree8014184b00aaf1d5e3a214b5c4ffa3be77fe7719
parent258a46e26d1e3d6778edf176daf12af17089a1ef
Make O_RDONLY non-zero (XCC) [1/7]

O_RDONLY had the value of 0, which caused two problems.  A minor one was
that it was hard to check for readability or read-only-ness.  Another
was that it was impossible to have an FD that had no permissions.  You
were at least readable.  This was blocking some of our future plans.

As far as whether or not O_RDONLY must be zero:

http://pubs.opengroup.org/onlinepubs/009695399/functions/open.html

In historical implementations the value of O_RDONLY is zero.
Because of that, it is not possible to detect the presence of
O_RDONLY and another option. Future implementations should
encode O_RDONLY and O_WRONLY as bit flags so that:

O_RDONLY | O_WRONLY == O_RDWR

So it looks like we're on solid ground.  Internally, we can refer to
O_RDONLY as O_READ too, since it's a little weird to say RDONLY |
WRONLY, since then they aren't "only."

This compiles, but you'll have runtime issues with the kernel.  The
following patches in the 5-patch series will fix those issues.

Rebuild the world.
kern/include/ns.h
kern/include/ros/fs.h
kern/src/syscall.c