aboutsummaryrefslogtreecommitdiff
path: root/kernel/kernel/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kernel/main.cpp')
-rw-r--r--kernel/kernel/main.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/kernel/kernel/main.cpp b/kernel/kernel/main.cpp
index dc57fb55..13697eb6 100644
--- a/kernel/kernel/main.cpp
+++ b/kernel/kernel/main.cpp
@@ -1,4 +1,5 @@
#include "kernel/filesystem/type_registry.hpp"
+#include <kernel/devices/init.hpp>
#include <kernel/devices/storage.hpp>
#include <kernel/drivers/init.hpp>
#include <kernel/filesystem/open_file_table.hpp>
@@ -141,6 +142,70 @@ auto run_demo() -> void
// 14) dmp the module after create new directory and file
// -exec monitor memsave 0xffffffff8025b000 0xA00000 dump_after.bin
+
+ // 15) read from /dev/null
+ auto fd_5 = kapi::filesystem::open("/dev/null");
+ if (fd_5)
+ {
+ kstd::println("--> successfully opened /dev/null as a file with file descriptor {}", fd_5.value());
+ }
+ else
+ {
+ kapi::system::panic("demo failed");
+ }
+
+ auto buffer_4 = kstd::vector<std::byte>{10, std::byte{0xff}};
+ if (auto read = kapi::filesystem::read(fd_5.value(), buffer_4); !read)
+ {
+ kapi::system::panic("demo failed: {}", read.error());
+ }
+ else
+ {
+ bytes_read = read->value;
+ }
+ kstd::println("--> read {} bytes from /dev/null", bytes_read);
+
+ if (auto written = kapi::filesystem::write(fd_5.value(), buffer_4); !written)
+ {
+ kapi::system::panic("demo failed: {}", written.error());
+ }
+ else
+ {
+ bytes_written = written->value;
+ }
+ kstd::println("--> written {} bytes to /dev/null", bytes_written);
+
+ // 16) read from /dev/null
+ auto fd_6 = kapi::filesystem::open("/dev/zero");
+ if (fd_6)
+ {
+ kstd::println("--> successfully opened /dev/zero as a file with file descriptor {}", fd_6.value());
+ }
+ else
+ {
+ kapi::system::panic("demo failed");
+ }
+
+ auto buffer_5 = kstd::vector<std::byte>{10, std::byte{0xff}};
+ if (auto read = kapi::filesystem::read(fd_6.value(), buffer_5); !read)
+ {
+ kapi::system::panic("demo failed: {}", read.error());
+ }
+ else
+ {
+ bytes_read = read->value;
+ }
+ kstd::println("--> read {} bytes from /dev/zero: {::#04x}", bytes_read, buffer_5);
+
+ if (auto written = kapi::filesystem::write(fd_6.value(), buffer_5); !written)
+ {
+ kapi::system::panic("demo failed: {}", written.error());
+ }
+ else
+ {
+ bytes_written = written->value;
+ }
+ kstd::println("--> written {} bytes to /dev/zero", bytes_written);
}
auto main() -> int
@@ -162,6 +227,9 @@ auto main() -> int
kernel::drivers::init();
kstd::println("[OS] Generic drivers initialized.");
+ kernel::devices::init();
+ kstd::println("[OS] Generic devices initialized.");
+
kapi::devices::init_platform_drivers();
kstd::println("[OS] Platform drivers initialized.");