diff --git a/src/arch/x86_64/e9out.c b/src/arch/x86_64/e9out.c new file mode 100644 index 00000000..d9baa24a --- /dev/null +++ b/src/arch/x86_64/e9out.c @@ -0,0 +1,28 @@ +#include +#include +#include + +#include +#include + +static int write(int* error, int minor, void* buff, size_t count, size_t offset){ + + char* b = buff; + + for(uintmax_t i = 0; i < count; ++i) + e9_putc(b[i]); + + *error = 0; + + return count; + +} + + +static devcalls calls = { + .write = write +}; + +void e9out_init(){ + devman_newdevice("e9out", TYPE_CHARDEV, MAJOR_E9OUT, 0, &calls); +} diff --git a/src/arch/x86_64/main.c b/src/arch/x86_64/main.c index a164cd57..8cc90c68 100644 --- a/src/arch/x86_64/main.c +++ b/src/arch/x86_64/main.c @@ -66,6 +66,8 @@ void kmain(){ consoledev_init(); pseudodevs_init(); + + e9out_init(); fb_init(); diff --git a/src/include/kernel/devman.h b/src/include/kernel/devman.h index 942fc759..00ced8f6 100644 --- a/src/include/kernel/devman.h +++ b/src/include/kernel/devman.h @@ -10,6 +10,7 @@ #define MAJOR_FULL 4 #define MAJOR_FB 5 #define MAJOR_KB 6 +#define MAJOR_E9OUT 7 typedef struct{ int (*read)(int* error, int minor, void* buff, size_t count, size_t offset);