summaryrefslogtreecommitdiff
path: root/os/boot/pc/fs.h
diff options
context:
space:
mode:
Diffstat (limited to 'os/boot/pc/fs.h')
-rw-r--r--os/boot/pc/fs.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/os/boot/pc/fs.h b/os/boot/pc/fs.h
new file mode 100644
index 00000000..1b53e929
--- /dev/null
+++ b/os/boot/pc/fs.h
@@ -0,0 +1,36 @@
+typedef struct File File;
+typedef struct Fs Fs;
+
+#include "dosfs.h"
+#include "kfs.h"
+
+struct File{
+ union{
+ Dosfile dos;
+ Kfsfile kfs;
+ int walked;
+ };
+ Fs *fs;
+ char *path;
+};
+
+struct Fs{
+ union {
+ Dos dos;
+ Kfs kfs;
+ };
+ int dev; /* device id */
+ long (*diskread)(Fs*, void*, long); /* disk read routine */
+ vlong (*diskseek)(Fs*, vlong); /* disk seek routine */
+ long (*read)(File*, void*, long);
+ int (*walk)(File*, char*);
+ File root;
+};
+
+extern int chatty;
+extern int dotini(Fs*);
+extern int fswalk(Fs*, char*, File*);
+extern int fsread(File*, void*, long);
+extern int fsboot(Fs*, char*, Boot*);
+
+#define BADPTR(x) ((ulong)x < 0x80000000)