Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
AG_TIME(3)		 BSD Library Functions Manual		    AG_TIME(3)

NAME
     AG_Time --	agar time interface

SYNOPSIS
     #include <agar/core.h>

DESCRIPTION
     These functions provide a low-level interface to monotonically increasing
     time sources.  Different time backends may	be implemented (see INTERNAL
     API below).  Agar provides	the following backends:

     agTimeOps_dummy	      No-op, timers will be unavailable.
     agTimeOps_posix	      Monotonic	clock using clock_gettime() interface
     agTimeOps_gettimeofday   Traditional gettimeofday() interface.
     agTimeOps_win32	      Windows winmm API.
     agTimeOps_renderer	      Monotonic	clock which stops while	graphical ren-
			      dering is	performed.  This is useful for appli-
			      cations performing offline rendering, where the
			      outcome may be influenced	by different threads
			      relying on Agar timers or	AG_Delay() calls.

INTERFACE
     Uint32 AG_GetTicks(void)

     void AG_Delay(Uint32 t)

     void AG_SetTimeOps(const AG_TimeOps *ops)

     The AG_GetTicks() function	returns	the current time in ticks.  One	tick
     usually corresponds to one	millisecond.

     The AG_Delay() function blocks the	current	thread,	waiting	at least t
     ticks before returning.  The exact	amount of time which AG_Delay()	waits
     is	backend-dependent.

     The AG_SetTimeOps() function selects a time backend (see below).

BACKEND	INTERFACE
     The argument to AG_SetTimeOps() should point to the following structure:

     typedef struct ag_time_ops	{
	     const char	*name;
	     void   (*Init)(void);
	     void   (*Destroy)(void);
	     Uint32 (*GetTicks)(void);
	     void   (*Delay)(Uint32);
     } AG_TimeOps;

     Init() performs any necessary initialization.  Destroy() cleans up	any
     allocated resources.

     The GetTicks() operation is the backend to	AG_GetTicks() and Delay() is
     the backend to AG_Delay().

EXAMPLES
     The following code	fragment selects the rendering-aware time backend,
     agTimeOps_renderer, if it is available:

	   #include <agar/config/have_clock_gettime.h>
	   #include <agar/config/have_pthreads.h>

	   #if defined(HAVE_CLOCK_GETTIME) && defined(HAVE_PTHREADS)
	   AG_SetTimeOps(&agTimeOps_renderer);
	   #endif

SEE ALSO
     AG_Intro(3), AG_Timer(3)

HISTORY
     The AG_Time interface first appeared in Agar 1.3.4

BSD				August 29, 2009				   BSD

NAME | SYNOPSIS | DESCRIPTION | INTERFACE | BACKEND INTERFACE | EXAMPLES | SEE ALSO | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=AG_Time&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help