aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/arch/devices/legacy_pit.hpp
blob: 356895c7fd444fbc9d110ae8aadd5f362ad54409 (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
29
#ifndef TEACHOS_ARCH_X86_64_DEVICES_LEGACY_PIT_HPP
#define TEACHOS_ARCH_X86_64_DEVICES_LEGACY_PIT_HPP

#include <kapi/devices/device.hpp>
#include <kapi/interrupts.hpp>

#include <cstddef>
#include <cstdint>

namespace arch::devices
{

  struct legacy_pit : kapi::devices::device, kapi::interrupts::handler
  {
    legacy_pit(std::size_t major, std::uint32_t frequency_in_hz);

    auto init() -> bool override;

    auto handle_interrupt(std::uint32_t irq_number) -> kapi::interrupts::status override;

  private:
    std::uint32_t m_irq_number{};
    std::uint32_t m_frequency_in_hz{};
    std::uint64_t m_ticks{};
  };

}  // namespace arch::devices

#endif