diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-09-30 11:43:54 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-09-30 11:43:54 +0200 |
| commit | ee4096101da245a792cd4df68973585305d09087 (patch) | |
| tree | 982df6acd03b7a13d24a9eae665d7905376e54b3 /arch/x86_64/kapi/interrupts.cpp | |
| parent | 5bad38935238da045d9fd467eae9dfd958deea34 (diff) | |
| parent | a8f2e1a0edc37cd1c06447c42ff94f3370e8a6bc (diff) | |
| download | kernel-ee4096101da245a792cd4df68973585305d09087.tar.xz kernel-ee4096101da245a792cd4df68973585305d09087.zip | |
Merge branch 'fmorgner/implement-interrupt-locking' into 'develop'
kapi/interrupts: implement irq_lock
See merge request teachos/kernel!61
Diffstat (limited to 'arch/x86_64/kapi/interrupts.cpp')
| -rw-r--r-- | arch/x86_64/kapi/interrupts.cpp | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/arch/x86_64/kapi/interrupts.cpp b/arch/x86_64/kapi/interrupts.cpp index 85acc0fa..37745122 100644 --- a/arch/x86_64/kapi/interrupts.cpp +++ b/arch/x86_64/kapi/interrupts.cpp @@ -1,16 +1,26 @@ #include <kapi/interrupts.hpp> +#include <arch/cpu/flags.hpp> + namespace kapi::interrupts { - auto enable() -> void + auto enabled() -> bool { - asm volatile("sti"); + return arch::cpu::check_flags<arch::cpu::flags::interrupt>(); } - auto disable() -> void + auto enabled(bool value) -> void { - asm volatile("cli"); + // NOLINTNEXTLINE(bugprone-branch-clone) + if (value) + { + asm volatile("sti"); + } + else + { + asm volatile("cli"); + } } -} // namespace kapi::interrupts
\ No newline at end of file +} // namespace kapi::interrupts |
