1
0
mirror of https://frontier.innolan.net/rainlance/amiga-tz.git synced 2025-11-21 19:59:27 +00:00
Files
amiga-tz/library/time_timer.c
2015-07-29 20:14:38 +02:00

67 lines
1.5 KiB
C

//--------------------------------------------------------------------------//
// This file is in the public domain. //
//--------------------------------------------------------------------------//
#include "time_header.h"
#include <devices/timer.h>
struct Device* TimerBase;
struct MsgPort* TimerPort;
struct timerequest* TimeRequest;
int CreateTimer()
{
int error;
TimerPort = CreateMsgPort();
if (TimerPort == NULL) {
return 1;
}
TimeRequest = (struct timerequest*)CreateIORequest(
TimerPort,
sizeof(struct timerequest)
);
if (TimeRequest == NULL) {
DeleteMsgPort(TimerPort);
return 2;
}
error = OpenDevice(
(STRPTR)TIMERNAME,
UNIT_MICROHZ,
(struct IORequest*)TimeRequest,
0
);
if (error != 0)
{
DeleteIORequest((struct IORequest*)TimeRequest);
DeleteMsgPort(TimerPort);
return 3;
}
TimerBase = (struct Device*)TimeRequest->tr_node.io_Device;
return 0;
}
void DeleteTimer()
{
if (TimeRequest != NULL) {
if (!CheckIO((struct IORequest*)TimeRequest)) {
WaitIO((struct IORequest*)TimeRequest);
}
CloseDevice((struct IORequest*)TimeRequest);
DeleteIORequest((struct IORequest*)TimeRequest);
TimeRequest = NULL;
}
if (TimerPort != NULL) {
DeleteMsgPort(TimerPort);
TimerPort = NULL;
}
}