stos/amd64: hpet: Add MdHpetTimeUsec() helper
Signed-off-by: Chloe M. <chloe@mensia.org>
This commit is contained in:
@@ -14,6 +14,7 @@
|
|||||||
#include <mm/vmm.h>
|
#include <mm/vmm.h>
|
||||||
#include <ke/knot.h>
|
#include <ke/knot.h>
|
||||||
#include <ex/trace.h>
|
#include <ex/trace.h>
|
||||||
|
#include <units.h>
|
||||||
|
|
||||||
#define DTRACE(Fmt, ...) \
|
#define DTRACE(Fmt, ...) \
|
||||||
TRACE("[ HPET ]: " Fmt, ##__VA_ARGS__)
|
TRACE("[ HPET ]: " Fmt, ##__VA_ARGS__)
|
||||||
@@ -57,6 +58,20 @@ HpetReadq(UCHAR Register)
|
|||||||
return MMIORead64(RegBase);
|
return MMIORead64(RegBase);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
USIZE
|
||||||
|
MdHpetTimeUsec(VOID)
|
||||||
|
{
|
||||||
|
UQUAD Period, Freq, Caps;
|
||||||
|
UQUAD Counter;
|
||||||
|
|
||||||
|
Caps = HpetReadq(HPET_GENERAL_CAP);
|
||||||
|
Period = (Caps >> HPET_PERIOD_SHIFT) & HPET_PERIOD_MASK;
|
||||||
|
Freq = FSEC_PER_SECOND / Period;
|
||||||
|
Counter = HpetReadq(HPET_MAIN_COUNTER);
|
||||||
|
|
||||||
|
return (Counter * USEC_PER_SECOND) / Freq;
|
||||||
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
MdHpetInit(VOID)
|
MdHpetInit(VOID)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -16,4 +16,9 @@
|
|||||||
*/
|
*/
|
||||||
VOID MdHpetInit(VOID);
|
VOID MdHpetInit(VOID);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Obtain the elapsed time in microseconds
|
||||||
|
*/
|
||||||
|
USIZE MdHpetTimeUsec(VOID);
|
||||||
|
|
||||||
#endif /* !_MACHINE_HPET_H_ */
|
#endif /* !_MACHINE_HPET_H_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user