ftp.nice.ch/pub/next/unix/graphics/urt.3.0.s.tar.gz#/urt.3.0.s/get/getx11/timer.c

This is timer.c in view mode; [Download] [Up]

#include <stdio.h>
#include <signal.h>
#include <sys/time.h>

#define USPS    1000000         /* number of microseconds in a second */
#define TICK    10000           /* system clock resolution in microseconds */

static int ringring;
static void (*ofunc)();
    
static void
sleepx()
{
        ringring = 1;
}

void
set_timer(n)
unsigned n;
{
    struct itimerval itv;
    register struct itimerval *itp = &itv;
    if (n == 0)
    {
	ringring = 1;
	return;
    }
    timerclear(&itp->it_interval);
    itp->it_value.tv_sec = n / USPS;
    itp->it_value.tv_usec = n % USPS;
    ofunc = (void (*)())signal(SIGALRM, sleepx);

    ringring = 0;
    (void) setitimer(ITIMER_REAL, itp, (struct itimerval *)0);
}

#ifndef sigmask
#define sigmask(m)	(1 << ((m)-1))
#endif

void
wait_timer()
{
    while (!ringring)
	sigpause( ~sigmask(SIGALRM));
    signal(SIGALRM, ofunc);
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.