9ns: Extend struct dir and the stat M bufs
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 23 Feb 2018 22:34:05 +0000 (17:34 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 6 Apr 2018 19:23:01 +0000 (15:23 -0400)
commitea056996ccb8b407ac26f7922f71fc12cb0812b8
treebd069eb6f2c8af4125ff2102522242217cc7d528
parentcd079e5318a13f7211918199b674cf4ec700cd9f
9ns: Extend struct dir and the stat M bufs

These extensions are IAW 9p2000.u.  Additionally, I extend the dir even
further to have full timespecs.  Between these timespecs and the extension
string, we might be able to do everything that statx() does.

This commit changes the kernel's side of things.  The stat bufs it produces
with convD2M() can be interpretted by older 9p readers, since the initial
part of the message is the same.  We can read old or new stat buffers with
convM2D().  For instance, userspace creates wstat messages (e.g. mkdir())
in the old format still.

I replaced the guts of convM2kdirent() and convM2kstat() with convM2D(),
which greatly simplifies that area.  Those functions are for converting
from Ms to glibc-style dirents and stat structures that Akaros used before
we had Plan 9.

I also cleaned up the STATFIXLEN mess.  I found that tricky to debug and a
little unclear.  Given there are two formats now, things would get even
worse; I wasn't about to change the magic '4's to '5's.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/include/ns.h
kern/src/net/devip.c
kern/src/ns/convD2M.c
kern/src/ns/convM2D.c
kern/src/ns/convM2S.c
kern/src/ns/convM2kdirent.c
kern/src/ns/dev.c
kern/src/ns/sysfile.c
kern/src/syscall.c