/*******************************************************************************
 *          
 *  The BYTE UNIX Benchmarks - Release 3
 *          Module: timeit.c   SID: 3.3 5/15/91 19:30:21
 *******************************************************************************
 * Bug reports, patches, comments, suggestions should be sent to:
 *
 *	Ben Smith, Rick Grehan or Tom Yager
 *	ben@bytepb.byte.com   rick_g@bytepb.byte.com   tyager@bytepb.byte.com
 *
 *******************************************************************************
 *  Modification Log:
 *  May 12, 1989 - modified empty loops to avoid nullifying by optimizing
 *                 compilers
 *  August 28, 1990 - changed timing relationship--now returns total number
 *	                  of iterations (ty)
 *  October 22, 1997 - code cleanup to remove ANSI C compiler warnings
 *                     Andy Kahn <kahn@zk3.dec.com>
 *
 ******************************************************************************/

/* this module is #included in other modules--no separate SCCS ID */

/*
 *  Timing routine
 *
 */

#include <signal.h>
#include <unistd.h>

#include <pthread.h>
#include <lib/zx/time.h>

struct TimerArgs {
	int seconds;
	void (*func)();
};

pthread_t gTimerThread;
TimerArgs gTimerArgs;

void * timerFunc(void *arg) {
	zx::nanosleep(zx::deadline_after(zx::sec(gTimerArgs.seconds)));
	gTimerArgs.func();
	return NULL;
}

void wake_me(int seconds, void (*func)())
{
	gTimerArgs.seconds = seconds;
	gTimerArgs.func = func;

	pthread_create(&gTimerThread, NULL, &timerFunc, NULL);
}

