فهرست منبع

Kernel: Add HPET::read_main_counter()

Maciej Zygmanowski 4 سال پیش
والد
کامیت
ceb5682b54
2فایلهای تغییر یافته به همراه7 افزوده شده و 0 حذف شده
  1. 6 0
      Kernel/Time/HPET.cpp
  2. 1 0
      Kernel/Time/HPET.h

+ 6 - 0
Kernel/Time/HPET.cpp

@@ -271,6 +271,12 @@ u64 HPET::update_time(u64& seconds_since_boot, u32& ticks_this_second, bool quer
     return (delta_ticks * 1000000000ull) / ticks_per_second;
     return (delta_ticks * 1000000000ull) / ticks_per_second;
 }
 }
 
 
+u64 HPET::read_main_counter() const
+{
+    auto& main_counter = registers().main_counter_value;
+    return ((u64)main_counter.high << 32) | (u64)main_counter.low;
+}
+
 void HPET::enable_periodic_interrupt(const HPETComparator& comparator)
 void HPET::enable_periodic_interrupt(const HPETComparator& comparator)
 {
 {
 #if HPET_DEBUG
 #if HPET_DEBUG

+ 1 - 0
Kernel/Time/HPET.h

@@ -60,6 +60,7 @@ public:
     void disable_periodic_interrupt(const HPETComparator& comparator);
     void disable_periodic_interrupt(const HPETComparator& comparator);
 
 
     u64 update_time(u64& seconds_since_boot, u32& ticks_this_second, bool query_only);
     u64 update_time(u64& seconds_since_boot, u32& ticks_this_second, bool query_only);
+    u64 read_main_counter() const;
 
 
     Vector<unsigned> capable_interrupt_numbers(u8 comparator_number);
     Vector<unsigned> capable_interrupt_numbers(u8 comparator_number);
     Vector<unsigned> capable_interrupt_numbers(const HPETComparator&);
     Vector<unsigned> capable_interrupt_numbers(const HPETComparator&);