summaryrefslogtreecommitdiff
path: root/kernel/src/drivers/powerbutton.cpp
blob: f34bdb9e6299f1d0e3e6095c4e331c7d1485d8f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <cstdint>
#include <drivers/powerbutton.hpp>
#include <klibc/stdio.hpp>
#if defined(__x86_64__)
#include <uacpi/event.h>
#include <generic/poweroff.hpp>

static uacpi_interrupt_ret handle_power_button(uacpi_handle ctx) {
    (void)ctx;
    poweroff::reboot();
    return UACPI_INTERRUPT_HANDLED;
}

void drivers::powerbutton::init() {
    uacpi_install_fixed_event_handler(
        UACPI_FIXED_EVENT_POWER_BUTTON,
	    handle_power_button, UACPI_NULL
    );
    klibc::printf("PowerButton: Registered powerbutton at ip 0x%p\r\n",(std::uint64_t)handle_power_button);
}

#else

void drivers::powerbutton::init() {

}

#endif