home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
LIBSRC.ZOO
/
libsrc
/
local
/
alarm.c
< prev
next >
Wrap
Text File
|
1992-04-11
|
972b
|
52 lines
#include <os2.h>
#include <signal.h>
unsigned long Dos32Exit() asm ("Dos32Exit");
unsigned long Dos32Sleep() asm ("Dos32Sleep");
unsigned long Dos32CreateThread() asm ("Dos32CreateThread");
static int alarm_active = 0;
static int kill_alarm = 0;
static int seconds_remaining = 0;
static alarmthread()
{
while (seconds_remaining) {
if (kill_alarm)
Dos32Exit (0, 0);
Dos32Sleep (1000);
--seconds_remaining;
}
if (kill_alarm)
Dos32Exit (0, 0);
alarm_active = 0;
kill_alarm = 0;
raise (SIGALRM);
Dos32Exit (0, 0);
}
int alarm (unsigned int seconds)
{
TID tid;
if (seconds == 0 && alarm_active) {
kill_alarm = 1;
return;
}
if (alarm_active) {
seconds_remaining = seconds;
return;
}
kill_alarm = 0;
alarm_active = 1;
seconds_remaining = seconds;
Dos32CreateThread (&tid, alarmthread, 0, 0, 1000);
return;
}