Split namec() into a start point and __namec_from
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 15 Sep 2015 19:10:56 +0000 (15:10 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 28 Sep 2015 19:14:00 +0000 (15:14 -0400)
commit88c2e9b911040f91602a8300119e9448c38323f1
treeea4704f933c2e3bea4735327e72d167a61d32124
parent2359e8895bf6ae7876e5c09f0f80401a055ae669
Split namec() into a start point and __namec_from

The first half of namec() figures out which chan we should start from,
whether that's a #device attach point, /, or DOT.  Then the rest does
the actual walk and other stuff.

This splits namec() such that we can eventually call the namec_from for
an implementation of openat().

AFAIK, things like prefix and the difference between name and aname is
mostly for debugging.  In namec(), aname was the original name asked for
(e.g. #root/foo/bar), and name gets advanced up to the path relative to
the starting point (e.g. /foo/bar).

namec_from() is a helper that just calls __namec_from, as if you already
had a real chan and were walking farther down the line (hence the
can_mount).  This should be the essence of an openat.
kern/include/ns.h
kern/src/ns/chan.c