diff options
Diffstat (limited to 'kernel/kernel/main.cpp')
| -rw-r--r-- | kernel/kernel/main.cpp | 68 |
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."); |
