aboutsummaryrefslogtreecommitdiff
path: root/kernel/src
diff options
context:
space:
mode:
authorLukas Oesch <lukasoesch20@gmail.com>2026-03-31 08:56:17 +0200
committerLukas Oesch <lukasoesch20@gmail.com>2026-03-31 08:56:17 +0200
commit9e85f9d1f34d08213a918d9c1b0845c179e323af (patch)
treed3694b22e1b41cbc3bfd340f8f9db47a6602ec73 /kernel/src
parentffac763323b88809d2f361bc01cdf9bfe0b1d67f (diff)
downloadteachos-9e85f9d1f34d08213a918d9c1b0845c179e323af.tar.xz
teachos-9e85f9d1f34d08213a918d9c1b0845c179e323af.zip
move device into kapi
Diffstat (limited to 'kernel/src')
-rw-r--r--kernel/src/devices/block_device.cpp4
-rw-r--r--kernel/src/devices/block_device_utils.cpp8
-rw-r--r--kernel/src/devices/device.cpp29
-rw-r--r--kernel/src/devices/storage/controller.cpp6
-rw-r--r--kernel/src/devices/storage/management.cpp8
-rw-r--r--kernel/src/devices/storage/ram_disk/device.cpp8
-rw-r--r--kernel/src/filesystem/devfs/filesystem.cpp4
-rw-r--r--kernel/src/filesystem/device_inode.cpp6
-rw-r--r--kernel/src/filesystem/ext2/filesystem.cpp4
-rw-r--r--kernel/src/filesystem/filesystem.cpp4
-rw-r--r--kernel/src/filesystem/rootfs/filesystem.cpp4
11 files changed, 31 insertions, 54 deletions
diff --git a/kernel/src/devices/block_device.cpp b/kernel/src/devices/block_device.cpp
index cfe2eb2..c006198 100644
--- a/kernel/src/devices/block_device.cpp
+++ b/kernel/src/devices/block_device.cpp
@@ -2,7 +2,7 @@
#include "kapi/system.hpp"
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include <kstd/string>
@@ -11,7 +11,7 @@
namespace kernel::devices
{
block_device::block_device(size_t major, size_t minor, kstd::string const & name, size_t block_size)
- : device(major, minor, name)
+ : kapi::devices::device(major, minor, name)
, m_block_size(block_size)
{
if (m_block_size == 0)
diff --git a/kernel/src/devices/block_device_utils.cpp b/kernel/src/devices/block_device_utils.cpp
index 5469087..6fe89fe 100644
--- a/kernel/src/devices/block_device_utils.cpp
+++ b/kernel/src/devices/block_device_utils.cpp
@@ -3,7 +3,7 @@
#include "kapi/system.hpp"
#include "kernel/devices/block_device.hpp"
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include <kstd/cstring>
#include <kstd/memory>
@@ -18,7 +18,7 @@ namespace kernel::devices::block_device_utils
using block_op = void (*)(size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
std::byte * scratch, void * buffer);
- auto process_blocks(kstd::shared_ptr<devices::device> const & device, size_t offset, size_t size, void * buffer,
+ auto process_blocks(kstd::shared_ptr<kapi::devices::device> const & device, size_t offset, size_t size, void * buffer,
block_op op) -> size_t
{
if (buffer == nullptr)
@@ -62,7 +62,7 @@ namespace kernel::devices::block_device_utils
return processed;
}
- auto read(kstd::shared_ptr<devices::device> const & device, void * buffer, size_t offset, size_t size) -> size_t
+ auto read(kstd::shared_ptr<kapi::devices::device> const & device, void * buffer, size_t offset, size_t size) -> size_t
{
return process_blocks(device, offset, size, buffer,
[](size_t idx, size_t off, size_t len, size_t done, devices::block_device * device,
@@ -80,7 +80,7 @@ namespace kernel::devices::block_device_utils
});
}
- auto write(kstd::shared_ptr<devices::device> const & device, void const * buffer, size_t offset, size_t size)
+ auto write(kstd::shared_ptr<kapi::devices::device> const & device, void const * buffer, size_t offset, size_t size)
-> size_t
{
return process_blocks(device, offset, size, const_cast<void *>(buffer),
diff --git a/kernel/src/devices/device.cpp b/kernel/src/devices/device.cpp
deleted file mode 100644
index 1e7589e..0000000
--- a/kernel/src/devices/device.cpp
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "kernel/devices/device.hpp"
-
-#include <kstd/string>
-
-#include <cstddef>
-
-namespace kernel::devices
-{
- device::device(size_t major, size_t minor, kstd::string const & name)
- : m_major(major)
- , m_minor(minor)
- , m_name(name)
- {}
-
- auto device::major() const -> size_t
- {
- return m_major;
- }
-
- auto device::minor() const -> size_t
- {
- return m_minor;
- }
-
- auto device::name() const -> kstd::string const &
- {
- return m_name;
- }
-} // namespace kernel::devices \ No newline at end of file
diff --git a/kernel/src/devices/storage/controller.cpp b/kernel/src/devices/storage/controller.cpp
index 46c45e4..1bef670 100644
--- a/kernel/src/devices/storage/controller.cpp
+++ b/kernel/src/devices/storage/controller.cpp
@@ -1,6 +1,6 @@
#include "kernel/devices/storage/controller.hpp"
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include <kstd/memory>
#include <kstd/vector>
@@ -21,7 +21,7 @@ namespace kernel::devices::storage
return m_major;
}
- auto controller::device_by_minor(size_t minor) const -> kstd::shared_ptr<devices::device>
+ auto controller::device_by_minor(size_t minor) const -> kstd::shared_ptr<kapi::devices::device>
{
auto it = std::ranges::find_if(m_devices, [minor](auto const & device) { return device->minor() == minor; });
@@ -37,7 +37,7 @@ namespace kernel::devices::storage
return m_devices.size();
}
- auto controller::all_devices() const -> kstd::vector<kstd::shared_ptr<devices::device>> const &
+ auto controller::all_devices() const -> kstd::vector<kstd::shared_ptr<kapi::devices::device>> const &
{
return m_devices;
}
diff --git a/kernel/src/devices/storage/management.cpp b/kernel/src/devices/storage/management.cpp
index 62c0ce4..d440bf0 100644
--- a/kernel/src/devices/storage/management.cpp
+++ b/kernel/src/devices/storage/management.cpp
@@ -3,7 +3,7 @@
#include "kapi/boot_modules.hpp"
#include "kapi/system.hpp"
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/devices/storage/controller.hpp"
#include "kernel/devices/storage/ram_disk/controller.hpp"
@@ -61,9 +61,9 @@ namespace kernel::devices::storage
return m_controllers;
}
- auto management::device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr<device>
+ auto management::device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr<kapi::devices::device>
{
- kstd::shared_ptr<device> found = nullptr;
+ kstd::shared_ptr<kapi::devices::device> found = nullptr;
std::ranges::find_if(m_controllers, [&](auto const & controller) {
if (controller != nullptr && controller->major() == major)
@@ -77,7 +77,7 @@ namespace kernel::devices::storage
return found;
}
- auto management::determine_boot_device() -> kstd::shared_ptr<device>
+ auto management::determine_boot_device() -> kstd::shared_ptr<kapi::devices::device>
{
return device_by_major_minor(START_MAJOR, 0);
}
diff --git a/kernel/src/devices/storage/ram_disk/device.cpp b/kernel/src/devices/storage/ram_disk/device.cpp
index 5116c93..8fc3b2a 100644
--- a/kernel/src/devices/storage/ram_disk/device.cpp
+++ b/kernel/src/devices/storage/ram_disk/device.cpp
@@ -1,8 +1,9 @@
+#include "kernel/devices/storage/ram_disk/device.hpp"
+
#include "kapi/boot_module/boot_module.hpp"
#include "kapi/system.hpp"
#include "kernel/devices/block_device.hpp"
-#include "kernel/devices/storage/ram_disk/device.hpp"
#include <kstd/cstring>
#include <kstd/string>
@@ -21,6 +22,11 @@ namespace kernel::devices::storage::ram_disk
, m_boot_module(module)
{}
+ auto device::init() -> bool
+ {
+ return m_boot_module.start_address.raw() != 0 && m_boot_module.size > 0;
+ }
+
auto device::read_block(size_t block_index, void * buffer) const -> void
{
if (buffer == nullptr)
diff --git a/kernel/src/filesystem/devfs/filesystem.cpp b/kernel/src/filesystem/devfs/filesystem.cpp
index 94c9b05..9043ac5 100644
--- a/kernel/src/filesystem/devfs/filesystem.cpp
+++ b/kernel/src/filesystem/devfs/filesystem.cpp
@@ -1,6 +1,6 @@
#include "kernel/filesystem/devfs/filesystem.hpp"
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/devices/storage/management.hpp"
#include "kernel/filesystem/devfs/inode.hpp"
#include "kernel/filesystem/device_inode.hpp"
@@ -13,7 +13,7 @@
namespace kernel::filesystem::devfs
{
- auto filesystem::mount(kstd::shared_ptr<devices::device> const &) -> int
+ auto filesystem::mount(kstd::shared_ptr<kapi::devices::device> const &) -> int
{
m_root_inode = kstd::make_shared<inode>();
build_device_inode_table();
diff --git a/kernel/src/filesystem/device_inode.cpp b/kernel/src/filesystem/device_inode.cpp
index d574d8f..af8cecc 100644
--- a/kernel/src/filesystem/device_inode.cpp
+++ b/kernel/src/filesystem/device_inode.cpp
@@ -3,7 +3,7 @@
#include "kapi/system.hpp"
#include "kernel/devices/block_device_utils.hpp"
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/filesystem/inode.hpp"
#include <kstd/cstring>
@@ -14,7 +14,7 @@
namespace kernel::filesystem
{
- device_inode::device_inode(kstd::shared_ptr<devices::device> const & device)
+ device_inode::device_inode(kstd::shared_ptr<kapi::devices::device> const & device)
: inode(inode_kind::device)
, m_device(device)
{
@@ -48,7 +48,7 @@ namespace kernel::filesystem
}
}
- auto device_inode::device() const -> kstd::shared_ptr<devices::device> const &
+ auto device_inode::device() const -> kstd::shared_ptr<kapi::devices::device> const &
{
return m_device;
}
diff --git a/kernel/src/filesystem/ext2/filesystem.cpp b/kernel/src/filesystem/ext2/filesystem.cpp
index d951158..eb9edc4 100644
--- a/kernel/src/filesystem/ext2/filesystem.cpp
+++ b/kernel/src/filesystem/ext2/filesystem.cpp
@@ -1,7 +1,7 @@
#include "kernel/filesystem/ext2/filesystem.hpp"
#include "kernel/devices/block_device_utils.hpp"
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/filesystem/ext2/inode.hpp"
#include "kernel/filesystem/ext2/superblock.hpp"
#include "kernel/filesystem/filesystem.hpp"
@@ -45,7 +45,7 @@ namespace kernel::filesystem::ext2
// }
} // namespace
- auto filesystem::mount(kstd::shared_ptr<devices::device> const & device) -> int
+ auto filesystem::mount(kstd::shared_ptr<kapi::devices::device> const & device) -> int
{
kernel::filesystem::filesystem::mount(device); // TODO BA-FS26 error handling?
// TODO BA-FS26 load proper root inode from ext2 metadata
diff --git a/kernel/src/filesystem/filesystem.cpp b/kernel/src/filesystem/filesystem.cpp
index c891d00..0ac9cf8 100644
--- a/kernel/src/filesystem/filesystem.cpp
+++ b/kernel/src/filesystem/filesystem.cpp
@@ -1,13 +1,13 @@
#include "kernel/filesystem/filesystem.hpp"
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
namespace kernel::filesystem
{
- auto filesystem::mount(kstd::shared_ptr<devices::device> const & device) -> int
+ auto filesystem::mount(kstd::shared_ptr<kapi::devices::device> const & device) -> int
{
if (!device)
{
diff --git a/kernel/src/filesystem/rootfs/filesystem.cpp b/kernel/src/filesystem/rootfs/filesystem.cpp
index 0133612..37bf588 100644
--- a/kernel/src/filesystem/rootfs/filesystem.cpp
+++ b/kernel/src/filesystem/rootfs/filesystem.cpp
@@ -1,6 +1,6 @@
#include "kernel/filesystem/rootfs/filesystem.hpp"
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/filesystem/inode.hpp"
#include "kernel/filesystem/rootfs/inode.hpp"
@@ -10,7 +10,7 @@
namespace kernel::filesystem::rootfs
{
- auto filesystem::mount(kstd::shared_ptr<devices::device> const &) -> int
+ auto filesystem::mount(kstd::shared_ptr<kapi::devices::device> const &) -> int
{
auto rfs_inode = kstd::make_shared<inode>();
rfs_inode->add_child("dev");