aboutsummaryrefslogtreecommitdiff
path: root/kapi
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-09-29 10:41:36 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-09-29 10:41:36 +0200
commite9b880648c18d3680ae10cc5660f0dbe981af5d8 (patch)
treea24e81e48920853ba191e8e7c6c3cfcd22194fba /kapi
parent5bad38935238da045d9fd467eae9dfd958deea34 (diff)
downloadkernel-e9b880648c18d3680ae10cc5660f0dbe981af5d8.tar.xz
kernel-e9b880648c18d3680ae10cc5660f0dbe981af5d8.zip
kapi/interrupt: rework enablement API
Diffstat (limited to 'kapi')
-rw-r--r--kapi/kapi/interrupts.hpp19
-rw-r--r--kapi/kapi/interrupts/state.hpp26
2 files changed, 28 insertions, 17 deletions
diff --git a/kapi/kapi/interrupts.hpp b/kapi/kapi/interrupts.hpp
index 9e41b727..f9ff22f9 100644
--- a/kapi/kapi/interrupts.hpp
+++ b/kapi/kapi/interrupts.hpp
@@ -1,5 +1,6 @@
#ifndef TEACHOS_KAPI_INTERRUPTS_HPP
#define TEACHOS_KAPI_INTERRUPTS_HPP
+#include <kapi/interrupts/state.hpp>
#include <kstd/memory.hpp>
@@ -8,9 +9,6 @@
namespace kapi::interrupts
{
- //! @addtogroup kapi-interrupts
- //! @{
-
//! A status that indicates whether an interrupt was handled by a handler.
enum struct status : bool
{
@@ -36,9 +34,7 @@ namespace kapi::interrupts
virtual auto handle_interrupt(std::uint32_t irq_number, kstd::weak_ptr<void> context) -> status = 0;
};
- //! @}
-
- //! @addtogroup kapi-interrupts-kernel-defined
+ //! @name Kernel-defined API
//! @{
//! Register an interrupt handler for the given IRQ number.
@@ -62,17 +58,6 @@ namespace kapi::interrupts
//! @}
- //! @addtogroup kapi-interrupts-platform-defined
- //! @{
-
- //! Enable external interrupts.
- auto enable() -> void;
-
- //! Disable external interrupts.
- auto disable() -> void;
-
- //! @}
-
} // namespace kapi::interrupts
#endif \ No newline at end of file
diff --git a/kapi/kapi/interrupts/state.hpp b/kapi/kapi/interrupts/state.hpp
new file mode 100644
index 00000000..a33a871b
--- /dev/null
+++ b/kapi/kapi/interrupts/state.hpp
@@ -0,0 +1,26 @@
+#ifndef TEACHOS_KAPI_INTERRUPTS_STATE_HPP
+#define TEACHOS_KAPI_INTERRUPTS_STATE_HPP
+
+// IWYU pragma: private, include <kapi/interrupts.hpp>
+
+namespace kapi::interrupts
+{
+
+ //! @name Platform-defined API
+ //! @{
+
+ //! Check if interrupts are currently enabled or not.
+ //!
+ //! @return @p true iff. interrupts are currently enabled, @p false otherwise.
+ auto enabled() -> bool;
+
+ //! Enable or disable interrupts.
+ //!
+ //! @param value @p true if interrupts shall be enabled, @p false otherwise.
+ auto enabled(bool value) -> void;
+
+ //! @}
+
+} // namespace kapi::interrupts
+
+#endif \ No newline at end of file