|
@@ -1,18 +1,21 @@
|
|
High Precision Event Timer Driver for Linux
|
|
High Precision Event Timer Driver for Linux
|
|
|
|
|
|
-The High Precision Event Timer (HPET) hardware is the future replacement for the 8254 and Real
|
|
|
|
-Time Clock (RTC) periodic timer functionality. Each HPET can have up two 32 timers. It is possible
|
|
|
|
-to configure the first two timers as legacy replacements for 8254 and RTC periodic. A specification
|
|
|
|
-done by INTEL and Microsoft can be found at http://www.intel.com/labs/platcomp/hpet/hpetspec.htm.
|
|
|
|
-
|
|
|
|
-The driver supports detection of HPET driver allocation and initialization of the HPET before the
|
|
|
|
-driver module_init routine is called. This enables platform code which uses timer 0 or 1 as the
|
|
|
|
-main timer to intercept HPET initialization. An example of this initialization can be found in
|
|
|
|
|
|
+The High Precision Event Timer (HPET) hardware is the future replacement
|
|
|
|
+for the 8254 and Real Time Clock (RTC) periodic timer functionality.
|
|
|
|
+Each HPET can have up two 32 timers. It is possible to configure the
|
|
|
|
+first two timers as legacy replacements for 8254 and RTC periodic timers.
|
|
|
|
+A specification done by Intel and Microsoft can be found at
|
|
|
|
+<http://www.intel.com/hardwaredesign/hpetspec.htm>.
|
|
|
|
+
|
|
|
|
+The driver supports detection of HPET driver allocation and initialization
|
|
|
|
+of the HPET before the driver module_init routine is called. This enables
|
|
|
|
+platform code which uses timer 0 or 1 as the main timer to intercept HPET
|
|
|
|
+initialization. An example of this initialization can be found in
|
|
arch/i386/kernel/time_hpet.c.
|
|
arch/i386/kernel/time_hpet.c.
|
|
|
|
|
|
-The driver provides two APIs which are very similar to the API found in the rtc.c driver.
|
|
|
|
-There is a user space API and a kernel space API. An example user space program is provided
|
|
|
|
-below.
|
|
|
|
|
|
+The driver provides two APIs which are very similar to the API found in
|
|
|
|
+the rtc.c driver. There is a user space API and a kernel space API.
|
|
|
|
+An example user space program is provided below.
|
|
|
|
|
|
#include <stdio.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <stdlib.h>
|
|
@@ -290,9 +293,8 @@ The kernel API has three interfaces exported from the driver:
|
|
hpet_unregister(struct hpet_task *tp)
|
|
hpet_unregister(struct hpet_task *tp)
|
|
hpet_control(struct hpet_task *tp, unsigned int cmd, unsigned long arg)
|
|
hpet_control(struct hpet_task *tp, unsigned int cmd, unsigned long arg)
|
|
|
|
|
|
-The kernel module using this interface fills in the ht_func and ht_data members of the
|
|
|
|
-hpet_task structure before calling hpet_register. hpet_control simply vectors to the hpet_ioctl
|
|
|
|
-routine and has the same commands and respective arguments as the user API. hpet_unregister
|
|
|
|
|
|
+The kernel module using this interface fills in the ht_func and ht_data
|
|
|
|
+members of the hpet_task structure before calling hpet_register.
|
|
|
|
+hpet_control simply vectors to the hpet_ioctl routine and has the same
|
|
|
|
+commands and respective arguments as the user API. hpet_unregister
|
|
is used to terminate usage of the HPET timer reserved by hpet_register.
|
|
is used to terminate usage of the HPET timer reserved by hpet_register.
|
|
-
|
|
|
|
-
|
|
|