commit 645c3b5c8672a102a1e58ad1fe6c285351d4ff7c
parent 44da3fe0e987be3f32ff86ece4b4e0c0add8b114
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date: Mon, 18 Feb 2019 14:30:23 +0000
Break dependency between libk and lib9p
Change-Id: Iaa98dc6b3bcf44b2f95ac8b9b3c35f7213fb6ac6
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>
Diffstat:
9 files changed, 21 insertions(+), 71 deletions(-)
diff --git a/include/libk.h b/include/libk.h
@@ -5,16 +5,6 @@
#include "features.h"
-struct dirent {
- char d_name[NAMELEN];
-};
-
-typedef struct {
- int fd;
- unsigned char buf[DIRLEN];
- struct dirent ent;
-} DIR;
-
extern int kprint(const char *fmt, ...) KPRINTFMT;
extern int ksnprint(char *str, size_t len, const char *fmt, ...) KSNPRINTFMT;
extern char *kgets(char *s, int n);
@@ -24,7 +14,3 @@ extern int kputs(const char *s);
extern int kvprint(const char *fmt, va_list va);
extern void kerror(const char *s);
extern int putenv(char *name);
-
-extern DIR *kopendir(DIR *dir, const char *name);
-extern struct dirent *kreaddir(DIR *dir);
-extern int kclosedir(DIR *dir);
diff --git a/include/rcode/9p.h b/include/rcode/9p.h
@@ -19,7 +19,21 @@ struct dir {
Qid qid;
};
+struct dirent {
+ char d_name[NAMELEN];
+};
+
+typedef struct {
+ int fd;
+ unsigned char buf[DIRLEN];
+ struct dirent ent;
+} DIR;
+
extern int dirtop9(Dir *dp, unsigned char *buf, int n);
extern int p9todir(Dir *dp, unsigned char *buf, int n);
+extern DIR *p9opendir(DIR *dir, const char *name);
+extern struct dirent *p9readdir(DIR *dir);
+extern int p9closedir(DIR *dir);
+
#endif
diff --git a/scripts/rules.mk b/scripts/rules.mk
@@ -12,7 +12,7 @@ SRCDIR = $(PROJECTDIR)/src
SCRIPTDIR = $(PROJECTDIR)/scripts
CONFDIR = $(PROJECTDIR)/config
INCLUDES = -I$(INCDIR) -I$(INCDIR)/bits/$(ARCH)/ -I$(INCDIR)/bits/$(SYS)
-LIBS = -lhdl -lrmu -lk -l9p -lc
+LIBS = -lhdl -lrmu -l9p -lk -lc
DRIVERS = $(PROJECTDIR)/drivers/builtin.o
ENVIRON = $(SCRIPTDIR)/env.sh
diff --git a/src/lib9p/Makefile b/src/lib9p/Makefile
@@ -8,7 +8,9 @@ OBJS = tobytes.o \
frombytes.o \
fromstring.o \
p9todir.o \
-
+ p9opendir.o \
+ p9readdir.o \
+ p9closedir.o \
TARGET = $(LIBDIR)/lib9p.a
diff --git a/src/libk/Makefile b/src/libk/Makefile
@@ -12,9 +12,6 @@ OBJS = doprnt.o \
kgets.o \
kerror.o \
putenv-$(MODE).o \
- kopendir.o \
- kreaddir.o \
- kclosedir.o \
__assert.o \
TARGET = $(LIBDIR)/libk.a
diff --git a/src/libk/kclosedir.c b/src/libk/kclosedir.c
@@ -1,8 +0,0 @@
-#include <libk.h>
-#include <rcode/rcode.h>
-
-int
-kclosedir(DIR *dir)
-{
- return close(dir->fd);
-}
diff --git a/src/libk/kopendir.c b/src/libk/kopendir.c
@@ -1,20 +0,0 @@
-#include <errno.h>
-
-#include <libk.h>
-#include <rcode/rcode.h>
-
-DIR *
-kopendir(DIR *dir, const char *name)
-{
- int fd;
-
- if ((fd = open(name, O_READ)) < 0) {
- errno = ENOENT;
- return NULL;
- }
- dir->fd = fd;
-
- /* TODO: check that it is actually a directory */
-
- return dir;
-}
diff --git a/src/libk/kreaddir.c b/src/libk/kreaddir.c
@@ -1,21 +0,0 @@
-#include <string.h>
-
-#include <libk.h>
-#include <rcode/rcode.h>
-
-struct dirent *
-kreaddir(DIR *dir)
-{
- int n;
- Dir dentry;
-
- if ((n = read(dir->fd, dir->buf, sizeof(dir->buf))) < 0)
- return NULL;
-
- if (p9todir(&dentry, dir->buf, n) < 0)
- return NULL;
-
- strcpy(dir->ent.d_name, dentry.name);
-
- return &dir->ent;
-}
diff --git a/src/romfw/dlang.c b/src/romfw/dlang.c
@@ -243,13 +243,13 @@ do_ls(const struct cmd *cmd, struct args *args)
DIR dir;
struct dirent *d;
- if (!kopendir(&dir, args->argv[1]))
+ if (!p9opendir(&dir, args->argv[1]))
return -1;
- while ((d = kreaddir(&dir)) != NULL)
+ while ((d = p9readdir(&dir)) != NULL)
kprint(PREFIX "%s\n", d->d_name);
- if (kclosedir(&dir))
+ if (p9closedir(&dir))
return -1;
return 0;