aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authortcsullivan <tullivan99@gmail.com>2018-10-29 23:27:53 -0400
committertcsullivan <tullivan99@gmail.com>2018-10-29 23:27:53 -0400
commit4fa4016807c25c5b2e28753cfd3c50d589d7c37c (patch)
tree226e8ea8d2b07579604c90429a4ccd3821bd450d /src
parent3a798edb836a30f612b6dd40334b69a2dbeeca22 (diff)
wip vfs stubs
Diffstat (limited to 'src')
-rw-r--r--src/kernel/svc.c12
-rw-r--r--src/kernel/vfs.c31
2 files changed, 35 insertions, 8 deletions
diff --git a/src/kernel/svc.c b/src/kernel/svc.c
index 1e03262..34ab006 100644
--- a/src/kernel/svc.c
+++ b/src/kernel/svc.c
@@ -66,6 +66,18 @@ void SVC_Handler(void) {
*/
clock_svc(args);
break;
+
+ case 3: /* FS-related calls
+ * 0 - open
+ * 1 - read
+ * 2 - write
+ * 3 - close
+ * 4 - stat
+ * 5 - seek
+ * link/unlink?
+ */
+ break;
+
default:
break;
}
diff --git a/src/kernel/vfs.c b/src/kernel/vfs.c
index a0d9bb4..538fbee 100644
--- a/src/kernel/vfs.c
+++ b/src/kernel/vfs.c
@@ -1,15 +1,30 @@
#include "vfs.h"
#include "task.h"
+typedef unsigned int size_t;
+
//static vfs_node vfs_root;
-int vfs_open(const char *path, int mode)
-{
- (void)path;
- (void)mode;
-// vfs_node *cd = task_getcwd();
-// if (cd == 0)
-// cd = &vfs_root;
+int vfs_open(const char *path, int flags, int mode);
+size_t vfs_read(int fd, void *buf, size_t count);
+size_t vfs_write(int fd, const void *buf, size_t count);
+int vfs_close(int fd);
- return 0;
+void vfs_svc(uint32_t *args)
+{
+ switch (args[0]) {
+ case 0:
+ *((int *)args[4]) = vfs_open(args[1], args[2], args[3]);
+ break;
+ case 1:
+ *((int *)args[4]) = vfs_read(args[1], args[2], args[3]);
+ break;
+ case 2:
+ *((int *)args[4]) = vfs_write(args[1], args[2], args[3]);
+ break;
+ case 3:
+ *((int *)args[2]) = vfs_close(args[1]);
+ break;
+ }
}
+