]> code.bitgloo.com Git - clyne/stmos.git/commitdiff
wip vfs stubs
authortcsullivan <tullivan99@gmail.com>
Tue, 30 Oct 2018 03:27:53 +0000 (23:27 -0400)
committertcsullivan <tullivan99@gmail.com>
Tue, 30 Oct 2018 03:27:53 +0000 (23:27 -0400)
src/kernel/svc.c
src/kernel/vfs.c

index 1e03262349f3b641c938dd7229f07d9d74e668fa..34ab006a8ff2c42e7918e9684990d581c1d96b9f 100644 (file)
@@ -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;
        }
index a0d9bb41c2d675dd59687f1687c837a2c77b2463..538fbee61ca3193ada41336371ad1c7d990d64af 100644 (file)
@@ -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;
+       }
 }
+