From 144c3fb3845eb9deb1093c3348af5e02cb2cbbb8 Mon Sep 17 00:00:00 2001 From: Lukas Oesch Date: Thu, 26 Feb 2026 11:27:48 +0100 Subject: setup basic devices and RAMDisk structure --- kernel/devices/CMakeLists.txt | 27 ++++++++++++++++++++++ kernel/devices/include/devices/BlockDevice.hpp | 11 +++++++++ kernel/devices/include/devices/Device.hpp | 11 +++++++++ .../devices/storage/RAMDisk/RAMDiskController.hpp | 11 +++++++++ .../devices/storage/RAMDisk/RAMDiskDevice.hpp | 11 +++++++++ .../include/devices/storage/StorageController.hpp | 11 +++++++++ .../include/devices/storage/StorageManagement.hpp | 16 +++++++++++++ kernel/devices/src/BlockDevice.cpp | 6 +++++ kernel/devices/src/Device.cpp | 6 +++++ .../src/storage/RAMDisk/RAMDiskController.cpp | 6 +++++ .../devices/src/storage/RAMDisk/RAMDiskDevice.cpp | 6 +++++ kernel/devices/src/storage/StorageController.cpp | 6 +++++ kernel/devices/src/storage/StorageManagement.cpp | 9 ++++++++ 13 files changed, 137 insertions(+) create mode 100644 kernel/devices/CMakeLists.txt create mode 100644 kernel/devices/include/devices/BlockDevice.hpp create mode 100644 kernel/devices/include/devices/Device.hpp create mode 100644 kernel/devices/include/devices/storage/RAMDisk/RAMDiskController.hpp create mode 100644 kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp create mode 100644 kernel/devices/include/devices/storage/StorageController.hpp create mode 100644 kernel/devices/include/devices/storage/StorageManagement.hpp create mode 100644 kernel/devices/src/BlockDevice.cpp create mode 100644 kernel/devices/src/Device.cpp create mode 100644 kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp create mode 100644 kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp create mode 100644 kernel/devices/src/storage/StorageController.cpp create mode 100644 kernel/devices/src/storage/StorageManagement.cpp (limited to 'kernel/devices') diff --git a/kernel/devices/CMakeLists.txt b/kernel/devices/CMakeLists.txt new file mode 100644 index 0000000..80b89bf --- /dev/null +++ b/kernel/devices/CMakeLists.txt @@ -0,0 +1,27 @@ +add_library("kernel_devices" STATIC) +add_library("kernel::devices" ALIAS "kernel_devices") + +target_sources("kernel_devices" PRIVATE + "src/Device.cpp" + "src/BlockDevice.cpp" + "src/storage/StorageController.cpp" + "src/storage/StorageManagement.cpp" + "src/storage/RAMDisk/RAMDiskController.cpp" + "src/storage/RAMDisk/RAMDiskDevice.cpp" +) + +target_sources("kernel_devices" PUBLIC + FILE_SET HEADERS + BASE_DIRS "include" + FILES + "include/devices/Device.hpp" + "include/devices/BlockDevice.hpp" + "include/devices/storage/StorageController.hpp" + "include/devices/storage/StorageManagement.hpp" + "include/devices/storage/RAMDisk/RAMDiskController.hpp" + "include/devices/storage/RAMDisk/RAMDiskDevice.hpp" +) + +target_include_directories("kernel_devices" PUBLIC + "include" +) \ No newline at end of file diff --git a/kernel/devices/include/devices/BlockDevice.hpp b/kernel/devices/include/devices/BlockDevice.hpp new file mode 100644 index 0000000..db66683 --- /dev/null +++ b/kernel/devices/include/devices/BlockDevice.hpp @@ -0,0 +1,11 @@ +#ifndef TEACH_OS_KERNEL_DEVICES_BLOCK_DEVICE_HPP +#define TEACH_OS_KERNEL_DEVICES_BLOCK_DEVICE_HPP + +namespace devices +{ + struct block_device + { + }; +} // namespace devices + +#endif \ No newline at end of file diff --git a/kernel/devices/include/devices/Device.hpp b/kernel/devices/include/devices/Device.hpp new file mode 100644 index 0000000..a3cac42 --- /dev/null +++ b/kernel/devices/include/devices/Device.hpp @@ -0,0 +1,11 @@ +#ifndef TEACH_OS_KERNEL_DEVICES_DEVICE_HPP +#define TEACH_OS_KERNEL_DEVICES_DEVICE_HPP + +namespace devices +{ + struct device + { + }; +} // namespace devices + +#endif \ No newline at end of file diff --git a/kernel/devices/include/devices/storage/RAMDisk/RAMDiskController.hpp b/kernel/devices/include/devices/storage/RAMDisk/RAMDiskController.hpp new file mode 100644 index 0000000..3fcb645 --- /dev/null +++ b/kernel/devices/include/devices/storage/RAMDisk/RAMDiskController.hpp @@ -0,0 +1,11 @@ +#ifndef TEACH_OS_KERNEL_DEVICES_STORAGE_RAM_DISK_CONTROLLER_HPP +#define TEACH_OS_KERNEL_DEVICES_STORAGE_RAM_DISK_CONTROLLER_HPP + +namespace devices::storage::ram_disk +{ + struct ram_disk_controller + { + }; +} // namespace devices::storage::ram_disk + +#endif \ No newline at end of file diff --git a/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp b/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp new file mode 100644 index 0000000..98471cf --- /dev/null +++ b/kernel/devices/include/devices/storage/RAMDisk/RAMDiskDevice.hpp @@ -0,0 +1,11 @@ +#ifndef TEACH_OS_KERNEL_DEVICES_STORAGE_RAM_DISK_DEVICE_HPP +#define TEACH_OS_KERNEL_DEVICES_STORAGE_RAM_DISK_DEVICE_HPP + +namespace devices::storage::ram_disk +{ + struct ram_disk_device + { + }; +} // namespace devices::storage::ram_disk + +#endif \ No newline at end of file diff --git a/kernel/devices/include/devices/storage/StorageController.hpp b/kernel/devices/include/devices/storage/StorageController.hpp new file mode 100644 index 0000000..3167be0 --- /dev/null +++ b/kernel/devices/include/devices/storage/StorageController.hpp @@ -0,0 +1,11 @@ +#ifndef TEACH_OS_KERNEL_DEVICES_STORAGE_STORAGE_CONTROLLER_HPP +#define TEACH_OS_KERNEL_DEVICES_STORAGE_STORAGE_CONTROLLER_HPP + +namespace devices::storage +{ + struct storage_controller + { + }; +} // namespace devices::storage + +#endif \ No newline at end of file diff --git a/kernel/devices/include/devices/storage/StorageManagement.hpp b/kernel/devices/include/devices/storage/StorageManagement.hpp new file mode 100644 index 0000000..2b2eb22 --- /dev/null +++ b/kernel/devices/include/devices/storage/StorageManagement.hpp @@ -0,0 +1,16 @@ +#ifndef TEACH_OS_KERNEL_DEVICES_STORAGE_STORAGE_MANAGEMENT_HPP +#define TEACH_OS_KERNEL_DEVICES_STORAGE_STORAGE_MANAGEMENT_HPP + +namespace devices::storage +{ + struct storage_management + { + //! @qualifier kernel-defined + //! Initialize the storage management subsystem. + auto init() -> void; + + private: + }; +} // namespace devices::storage + +#endif \ No newline at end of file diff --git a/kernel/devices/src/BlockDevice.cpp b/kernel/devices/src/BlockDevice.cpp new file mode 100644 index 0000000..970f7b2 --- /dev/null +++ b/kernel/devices/src/BlockDevice.cpp @@ -0,0 +1,6 @@ +#include "devices/BlockDevice.hpp" + +namespace devices +{ + // TODO BA-FS26 implement block device functionality +} // namespace devices \ No newline at end of file diff --git a/kernel/devices/src/Device.cpp b/kernel/devices/src/Device.cpp new file mode 100644 index 0000000..d755fb9 --- /dev/null +++ b/kernel/devices/src/Device.cpp @@ -0,0 +1,6 @@ +#include "devices/Device.hpp" + +namespace devices +{ + // TODO BA-FS26 implement device functionality +} // namespace devices \ No newline at end of file diff --git a/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp b/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp new file mode 100644 index 0000000..9c6427d --- /dev/null +++ b/kernel/devices/src/storage/RAMDisk/RAMDiskController.cpp @@ -0,0 +1,6 @@ +#include "devices/storage/RAMDisk/RAMDiskController.hpp" + +namespace devices::storage::ram_disk +{ + // TODO BA-FS26 implement ram disk controller functionality +} // namespace devices::storage::ram_disk \ No newline at end of file diff --git a/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp b/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp new file mode 100644 index 0000000..8d8f51e --- /dev/null +++ b/kernel/devices/src/storage/RAMDisk/RAMDiskDevice.cpp @@ -0,0 +1,6 @@ +#include "devices/storage/RAMDisk/RAMDiskDevice.hpp" + +namespace devices::storage::ram_disk +{ + // TODO BA-FS26 implement ram disk device functionality +} // namespace devices::storage::ram_disk \ No newline at end of file diff --git a/kernel/devices/src/storage/StorageController.cpp b/kernel/devices/src/storage/StorageController.cpp new file mode 100644 index 0000000..fe386cf --- /dev/null +++ b/kernel/devices/src/storage/StorageController.cpp @@ -0,0 +1,6 @@ +#include "devices/storage/StorageController.hpp" + +namespace devices::storage +{ + // TODO BA-FS26 implement storage controller functionality +} // namespace devices::storage \ No newline at end of file diff --git a/kernel/devices/src/storage/StorageManagement.cpp b/kernel/devices/src/storage/StorageManagement.cpp new file mode 100644 index 0000000..f34fa15 --- /dev/null +++ b/kernel/devices/src/storage/StorageManagement.cpp @@ -0,0 +1,9 @@ +#include "devices/storage/StorageManagement.hpp" + +namespace devices::storage +{ + auto storage_management::init() -> void + { + // TODO BA-FS26 implement storage management initialization + } +} // namespace devices::storage \ No newline at end of file -- cgit v1.2.3