9ns: Add get_cwd()
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 7 Mar 2018 19:02:13 +0000 (11:02 -0800)
committerBarret Rhoden <brho@cs.berkeley.edu>
Mon, 30 Apr 2018 18:31:44 +0000 (14:31 -0400)
Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/include/ns.h
kern/src/ns/sysfile.c

index 8555ed2..9e0f884 100644 (file)
@@ -1015,6 +1015,7 @@ int sys_dup_to(struct proc *from_proc, unsigned int from_fd,
 int sysfstat(int fd, uint8_t*, int n);
 int sysfstatakaros(int fd, struct kstat *);
 char *sysfd2path(int fd);
+char *sysgetcwd(void);
 int sysfauth(int fd, char *aname);
 int sysfversion(int fd, unsigned int msize, char *vers, unsigned int arglen);
 int sysfwstat(int fd, uint8_t * buf, int n);
index 7899700..53198e2 100644 (file)
@@ -307,6 +307,21 @@ char *sysfd2path(int fd)
        return s;
 }
 
+char *sysgetcwd(void)
+{
+       char *s = NULL;
+       struct chan *dot;
+
+       rcu_read_lock();
+       dot = rcu_dereference(current->dot);
+       kref_get(&dot->ref, 1);
+       rcu_read_unlock();
+       if (dot->name)
+               kstrdup(&s, dot->name->s);
+       cclose(dot);
+       return s;
+}
+
 int sysfauth(int fd, char *aname)
 {
        ERRSTACK(2);