aboutsummaryrefslogtreecommitdiff
path: root/kernel/include
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/include
parentffac763323b88809d2f361bc01cdf9bfe0b1d67f (diff)
downloadteachos-9e85f9d1f34d08213a918d9c1b0845c179e323af.tar.xz
teachos-9e85f9d1f34d08213a918d9c1b0845c179e323af.zip
move device into kapi
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/kernel/devices/block_device.hpp4
-rw-r--r--kernel/include/kernel/devices/block_device_utils.hpp6
-rw-r--r--kernel/include/kernel/devices/device.hpp62
-rw-r--r--kernel/include/kernel/devices/storage/controller.hpp8
-rw-r--r--kernel/include/kernel/devices/storage/management.hpp6
-rw-r--r--kernel/include/kernel/devices/storage/ram_disk/device.hpp6
-rw-r--r--kernel/include/kernel/filesystem/devfs/filesystem.hpp4
-rw-r--r--kernel/include/kernel/filesystem/device_inode.hpp8
-rw-r--r--kernel/include/kernel/filesystem/ext2/filesystem.hpp4
-rw-r--r--kernel/include/kernel/filesystem/filesystem.hpp6
-rw-r--r--kernel/include/kernel/filesystem/rootfs/filesystem.hpp4
11 files changed, 31 insertions, 87 deletions
diff --git a/kernel/include/kernel/devices/block_device.hpp b/kernel/include/kernel/devices/block_device.hpp
index 619b815..43e6511 100644
--- a/kernel/include/kernel/devices/block_device.hpp
+++ b/kernel/include/kernel/devices/block_device.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_DEVICES_BLOCK_DEVICE_HPP
#define TEACH_OS_KERNEL_DEVICES_BLOCK_DEVICE_HPP
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include <kstd/string>
@@ -12,7 +12,7 @@ namespace kernel::devices
/**
* @brief Base interface for block-addressable devices.
*/
- struct block_device : device
+ struct block_device : kapi::devices::device
{
/**
* @brief Create a block device descriptor.
diff --git a/kernel/include/kernel/devices/block_device_utils.hpp b/kernel/include/kernel/devices/block_device_utils.hpp
index bb49d04..5e862ba 100644
--- a/kernel/include/kernel/devices/block_device_utils.hpp
+++ b/kernel/include/kernel/devices/block_device_utils.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_DEVICES_BLOCK_DEVICE_UTILS_HPP
#define TEACH_OS_KERNEL_DEVICES_BLOCK_DEVICE_UTILS_HPP
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include <kstd/memory>
@@ -9,8 +9,8 @@
namespace kernel::devices::block_device_utils
{
- auto read(kstd::shared_ptr<devices::device> const & device, void * buffer, size_t offset, size_t size) -> size_t;
- auto write(kstd::shared_ptr<devices::device> const & device, void const * buffer, size_t offset, size_t size)
+ auto read(kstd::shared_ptr<kapi::devices::device> const & device, void * buffer, size_t offset, size_t size) -> size_t;
+ auto write(kstd::shared_ptr<kapi::devices::device> const & device, void const * buffer, size_t offset, size_t size)
-> size_t;
} // namespace kernel::devices::block_device_utils
diff --git a/kernel/include/kernel/devices/device.hpp b/kernel/include/kernel/devices/device.hpp
deleted file mode 100644
index 67fa5ad..0000000
--- a/kernel/include/kernel/devices/device.hpp
+++ /dev/null
@@ -1,62 +0,0 @@
-#ifndef TEACH_OS_KERNEL_DEVICES_DEVICE_HPP
-#define TEACH_OS_KERNEL_DEVICES_DEVICE_HPP
-
-#include <kstd/string>
-
-#include <cstddef>
-
-namespace kernel::devices
-{
- /**
- * @brief Base device identified by a major, minor number and name.
- */
- struct device
- {
- /**
- * @brief Create a device identifier from @p major, @p minor and @p name.
- * @param major Device major number.
- * @param minor Device minor number.
- * @param name Device name.
- */
- device(size_t major, size_t minor, kstd::string const & name);
-
- /**
- * @brief Virtual destructor for device.
- */
- virtual ~device() = default;
-
- /**
- * @brief Returns the major number of the device.
- * @return Device major number.
- */
- [[nodiscard]] auto major() const -> size_t;
-
- /**
- * @brief Returns the minor number of the device.
- * @return Device minor number.
- */
- [[nodiscard]] auto minor() const -> size_t;
-
- /**
- * @brief Returns the name of the device.
- * @return Device name.
- */
- [[nodiscard]] auto name() const -> kstd::string const &;
-
- /**
- * @brief Check if the device is a block device.
- * @return true if this device is a block device, false otherwise.
- */
- [[nodiscard]] virtual auto is_block_device() const -> bool
- {
- return false;
- }
-
- private:
- size_t m_major;
- size_t m_minor;
- kstd::string m_name;
- };
-} // namespace kernel::devices
-
-#endif \ No newline at end of file
diff --git a/kernel/include/kernel/devices/storage/controller.hpp b/kernel/include/kernel/devices/storage/controller.hpp
index e3bfd01..a91e452 100644
--- a/kernel/include/kernel/devices/storage/controller.hpp
+++ b/kernel/include/kernel/devices/storage/controller.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_DEVICES_STORAGE_CONTROLLER_HPP
#define TEACH_OS_KERNEL_DEVICES_STORAGE_CONTROLLER_HPP
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include <kstd/memory>
#include <kstd/vector>
@@ -51,7 +51,7 @@ namespace kernel::devices::storage
* @brief Return all devices managed by this controller.
* @return Vector of all managed devices.
*/
- [[nodiscard]] auto all_devices() const -> kstd::vector<kstd::shared_ptr<devices::device>> const &;
+ [[nodiscard]] auto all_devices() const -> kstd::vector<kstd::shared_ptr<kapi::devices::device>> const &;
/**
* @brief Find a managed device by major/minor numbers.
@@ -59,12 +59,12 @@ namespace kernel::devices::storage
* @param minor Device minor number.
* @return Matching block device, or nullptr if no device matches.
*/
- [[nodiscard]] auto device_by_minor(size_t minor) const -> kstd::shared_ptr<devices::device>;
+ [[nodiscard]] auto device_by_minor(size_t minor) const -> kstd::shared_ptr<kapi::devices::device>;
protected:
size_t m_major{};
size_t m_minors_per_device{};
- kstd::vector<kstd::shared_ptr<devices::device>> m_devices{};
+ kstd::vector<kstd::shared_ptr<kapi::devices::device>> m_devices{};
};
} // namespace kernel::devices::storage
diff --git a/kernel/include/kernel/devices/storage/management.hpp b/kernel/include/kernel/devices/storage/management.hpp
index 255d170..0176ce1 100644
--- a/kernel/include/kernel/devices/storage/management.hpp
+++ b/kernel/include/kernel/devices/storage/management.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_DEVICES_STORAGE_MANAGEMENT_HPP
#define TEACH_OS_KERNEL_DEVICES_STORAGE_MANAGEMENT_HPP
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/devices/storage/controller.hpp"
#include <kstd/memory>
@@ -56,13 +56,13 @@ namespace kernel::devices::storage
* @param minor Device minor number.
* @return Matching device, or nullptr if no device matches.
*/
- auto device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr<device>;
+ auto device_by_major_minor(size_t major, size_t minor) -> kstd::shared_ptr<kapi::devices::device>;
/**
* @brief Determine the boot device.
* @return Boot device, or nullptr if it cannot be determined.
*/
- auto determine_boot_device() -> kstd::shared_ptr<device>;
+ auto determine_boot_device() -> kstd::shared_ptr<kapi::devices::device>;
private:
/**
diff --git a/kernel/include/kernel/devices/storage/ram_disk/device.hpp b/kernel/include/kernel/devices/storage/ram_disk/device.hpp
index 0777e86..e17416e 100644
--- a/kernel/include/kernel/devices/storage/ram_disk/device.hpp
+++ b/kernel/include/kernel/devices/storage/ram_disk/device.hpp
@@ -23,6 +23,12 @@ namespace kernel::devices::storage::ram_disk
device(kapi::boot_modules::boot_module const & module, size_t major, size_t minor);
/**
+ * @brief Initialize the RAM disk device.
+ * @return true if module backing memory is valid, false otherwise.
+ */
+ auto init() -> bool override;
+
+ /**
* @brief Read one logical block into @p buffer.
* @param block_index Zero-based block index.
* @param buffer Destination buffer, must not be null.
diff --git a/kernel/include/kernel/filesystem/devfs/filesystem.hpp b/kernel/include/kernel/filesystem/devfs/filesystem.hpp
index 5ec6221..29ae388 100644
--- a/kernel/include/kernel/filesystem/devfs/filesystem.hpp
+++ b/kernel/include/kernel/filesystem/devfs/filesystem.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVFS_FILESYSTEM_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_DEVFS_FILESYSTEM_HPP
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/filesystem/filesystem.hpp"
#include "kernel/filesystem/inode.hpp"
@@ -14,7 +14,7 @@ namespace kernel::filesystem::devfs
{
struct filesystem : kernel::filesystem::filesystem
{
- auto mount(kstd::shared_ptr<devices::device> const & device) -> int override;
+ auto mount(kstd::shared_ptr<kapi::devices::device> const & device) -> int override;
auto lookup(kstd::shared_ptr<kernel::filesystem::inode> const & parent, std::string_view name)
-> kstd::shared_ptr<kernel::filesystem::inode> override;
diff --git a/kernel/include/kernel/filesystem/device_inode.hpp b/kernel/include/kernel/filesystem/device_inode.hpp
index 7f044b0..18a98f5 100644
--- a/kernel/include/kernel/filesystem/device_inode.hpp
+++ b/kernel/include/kernel/filesystem/device_inode.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_DEVICE_INODE_HPP
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
@@ -12,15 +12,15 @@ namespace kernel::filesystem
{
struct device_inode : inode
{
- explicit device_inode(kstd::shared_ptr<devices::device> const & device);
+ explicit device_inode(kstd::shared_ptr<kapi::devices::device> const & device);
auto read(void * buffer, size_t offset, size_t size) const -> size_t override;
auto write(void const * buffer, size_t offset, size_t size) -> size_t override;
- [[nodiscard]] auto device() const -> kstd::shared_ptr<devices::device> const &;
+ [[nodiscard]] auto device() const -> kstd::shared_ptr<kapi::devices::device> const &;
private:
- kstd::shared_ptr<devices::device> m_device;
+ kstd::shared_ptr<kapi::devices::device> m_device;
};
} // namespace kernel::filesystem
diff --git a/kernel/include/kernel/filesystem/ext2/filesystem.hpp b/kernel/include/kernel/filesystem/ext2/filesystem.hpp
index 763cd1d..078da31 100644
--- a/kernel/include/kernel/filesystem/ext2/filesystem.hpp
+++ b/kernel/include/kernel/filesystem/ext2/filesystem.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILESYSTEM_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_EXT2_FILESYSTEM_HPP
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/filesystem/filesystem.hpp"
#include "kernel/filesystem/inode.hpp"
@@ -13,7 +13,7 @@ namespace kernel::filesystem::ext2
{
struct filesystem : kernel::filesystem::filesystem
{
- auto mount(kstd::shared_ptr<devices::device> const & device) -> int override;
+ auto mount(kstd::shared_ptr<kapi::devices::device> const & device) -> int override;
auto lookup(kstd::shared_ptr<kernel::filesystem::inode> const & parent, std::string_view name)
-> kstd::shared_ptr<kernel::filesystem::inode> override;
};
diff --git a/kernel/include/kernel/filesystem/filesystem.hpp b/kernel/include/kernel/filesystem/filesystem.hpp
index c50a86c..1d86178 100644
--- a/kernel/include/kernel/filesystem/filesystem.hpp
+++ b/kernel/include/kernel/filesystem/filesystem.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_FILESYSTEM_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_FILESYSTEM_HPP
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/filesystem/inode.hpp"
#include <kstd/memory>
@@ -15,14 +15,14 @@ namespace kernel::filesystem
{
virtual ~filesystem() = default;
- virtual auto mount(kstd::shared_ptr<devices::device> const & device) -> int;
+ virtual auto mount(kstd::shared_ptr<kapi::devices::device> const & device) -> int;
virtual auto lookup(kstd::shared_ptr<inode> const & parent, std::string_view name) -> kstd::shared_ptr<inode> = 0;
[[nodiscard]] auto root_inode() const -> kstd::shared_ptr<inode> const &;
protected:
kstd::shared_ptr<inode> m_root_inode{};
- kstd::shared_ptr<devices::device> m_device{};
+ kstd::shared_ptr<kapi::devices::device> m_device{};
kstd::vector<kstd::shared_ptr<inode>> m_inodes{};
};
diff --git a/kernel/include/kernel/filesystem/rootfs/filesystem.hpp b/kernel/include/kernel/filesystem/rootfs/filesystem.hpp
index b1f33a9..5632d86 100644
--- a/kernel/include/kernel/filesystem/rootfs/filesystem.hpp
+++ b/kernel/include/kernel/filesystem/rootfs/filesystem.hpp
@@ -1,7 +1,7 @@
#ifndef TEACH_OS_KERNEL_FILESYSTEM_ROOTFS_FILESYSTEM_HPP
#define TEACH_OS_KERNEL_FILESYSTEM_ROOTFS_FILESYSTEM_HPP
-#include "kernel/devices/device.hpp"
+#include "kapi/devices/device.hpp"
#include "kernel/filesystem/filesystem.hpp"
#include "kernel/filesystem/inode.hpp"
@@ -15,7 +15,7 @@ namespace kernel::filesystem::rootfs
{
struct filesystem : kernel::filesystem::filesystem
{
- auto mount(kstd::shared_ptr<devices::device> const & device) -> int override;
+ auto mount(kstd::shared_ptr<kapi::devices::device> const & device) -> int override;
auto lookup(kstd::shared_ptr<kernel::filesystem::inode> const & parent, std::string_view name)
-> kstd::shared_ptr<kernel::filesystem::inode> override;
};