aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/devices
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/devices
parentffac763323b88809d2f361bc01cdf9bfe0b1d67f (diff)
downloadteachos-9e85f9d1f34d08213a918d9c1b0845c179e323af.tar.xz
teachos-9e85f9d1f34d08213a918d9c1b0845c179e323af.zip
move device into kapi
Diffstat (limited to 'kernel/src/devices')
-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
6 files changed, 20 insertions, 43 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)