diff --git a/src/tests/add-ons/kernel/drivers/Jamfile b/src/tests/add-ons/kernel/drivers/Jamfile index e98372a8dc..4480be903e 100644 --- a/src/tests/add-ons/kernel/drivers/Jamfile +++ b/src/tests/add-ons/kernel/drivers/Jamfile @@ -1,5 +1,6 @@ SubDir HAIKU_TOP src tests add-ons kernel drivers ; SubInclude HAIKU_TOP src tests add-ons kernel drivers audio ; +SubInclude HAIKU_TOP src tests add-ons kernel drivers hpet ; SubInclude HAIKU_TOP src tests add-ons kernel drivers random ; SubInclude HAIKU_TOP src tests add-ons kernel drivers tty ; diff --git a/src/tests/add-ons/kernel/drivers/hpet/Jamfile b/src/tests/add-ons/kernel/drivers/hpet/Jamfile new file mode 100644 index 0000000000..f7bd459baf --- /dev/null +++ b/src/tests/add-ons/kernel/drivers/hpet/Jamfile @@ -0,0 +1,10 @@ +SubDir HAIKU_TOP src tests add-ons kernel drivers hpet ; + +UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel drivers timer ] : true ; + +Application hpet_test : + main.cpp + : be $(TARGET_LIBSUPC++) + ; + + diff --git a/src/tests/add-ons/kernel/drivers/hpet/main.cpp b/src/tests/add-ons/kernel/drivers/hpet/main.cpp new file mode 100644 index 0000000000..f61dc99f71 --- /dev/null +++ b/src/tests/add-ons/kernel/drivers/hpet/main.cpp @@ -0,0 +1,47 @@ +#include +#include +#include +#include +#include + +#include + +#include + +int main() +{ + int hpetFD = open("/dev/misc/hpet", O_RDWR); + if (hpetFD < 0) { + printf("Cannot open HPET driver: %s\n", strerror(errno)); + return -1; + } + + uint64 value, newValue; + read(hpetFD, &value, sizeof(uint64)); + + snooze(1000000); + + read(hpetFD, &newValue, sizeof(uint64)); + printf("HPET counter value difference (1 sec): %lld\n", newValue - value); + + status_t status; + bigtime_t timeValue = 2000000; + printf("Waiting 2 seconds...\n"); + status = ioctl(hpetFD, HPET_WAIT_TIMER, &timeValue, sizeof(timeValue)); + printf("%s.\n", strerror(status)); + + timeValue = 5000000; + printf("Waiting 5 seconds...\n"); + status = ioctl(hpetFD, HPET_WAIT_TIMER, &timeValue, sizeof(timeValue)); + printf("%s.\n", strerror(status)); + + timeValue = 1000000; + printf("Waiting 1 second...\n"); + status = ioctl(hpetFD, HPET_WAIT_TIMER, &timeValue, sizeof(timeValue)); + printf("%s.\n", strerror(status)); + + close(hpetFD); + + return 0; +} +