timer.cc 577 B

12345678910111213141516171819202122232425262728293031
  1. #include <types/types.h>
  2. #include <kernel/hw/port.hpp>
  3. #include <kernel/hw/timer.hpp>
  4. constexpr kernel::hw::p8 port_control(0x43);
  5. constexpr kernel::hw::p8 port_count(0x40);
  6. static std::size_t _current_ticks = 0;
  7. SECTION(".text.kinit")
  8. void kernel::hw::timer::init_pit(void)
  9. {
  10. // set interval
  11. port_control = 0x34;
  12. // send interval number
  13. // 0x2e9a = 11930 = 100Hz
  14. port_count = 0x9a;
  15. port_count = 0x2e;
  16. }
  17. void kernel::hw::timer::inc_tick(void)
  18. {
  19. ++_current_ticks;
  20. }
  21. size_t kernel::hw::timer::current_ticks(void)
  22. {
  23. return _current_ticks;
  24. }