⛏️ index : haiku.git

#include <errno.h>
#include <fcntl.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>

#include <OS.h>

#include <hpet_interface.h>

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;
}