summaryrefslogtreecommitdiffhomepage
path: root/src/loader/inc/dev.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/loader/inc/dev.h')
-rw-r--r--src/loader/inc/dev.h12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/loader/inc/dev.h b/src/loader/inc/dev.h
index 9d9913e..9e64bdb 100644
--- a/src/loader/inc/dev.h
+++ b/src/loader/inc/dev.h
@@ -5,6 +5,7 @@
#include <def.h>
#include <dsk.h>
+#include <impl/all.h>
enum dev_type {
DEV_DISK,
@@ -19,12 +20,19 @@ struct dev {
s32 (*read)(void *, u32, u32, struct dev *);
s32 (*write)(const void *, u32, u32, struct dev *);
- struct fs fs;
+ union {
+ struct {
+ struct fs fs;
+ struct impl impl;
+ } disk;
+ // TODO: Other (framebuffer?)
+ } p; // Prototype union
u32 data; // Optional (device-specific) data/information
};
-struct dev *dev_get(u8 id);
+struct dev *dev_get_by_id(u8 id);
+struct dev *dev_get_by_name(const char *name, u32 len);
void dev_foreach(enum dev_type type, u8 (*cb)(struct dev *)); // cb=1 => break
u8 dev_register(enum dev_type type, char *name, u32 data,
s32 (*read)(void *, u32, u32, struct dev *),