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

FreeBSD Manual Pages

  
 
  

home | help
TIMER_CREATE(2) 	       System Calls Manual		 TIMER_CREATE(2)

NAME
     timer_create -- create a per-process timer (REALTIME)

LIBRARY
     POSIX Real-time Library (librt, -lrt)

SYNOPSIS
     #include <time.h>
     #include <signal.h>

     int
     timer_create(clockid_t clockid, struct sigevent *restrict evp,
	 timer_t *restrict timerid);

DESCRIPTION
     The timer_create() system call creates a per-process timer using the speci-
     fied  clock,  clock_id, as the timing base.  The timer_create() system call
     returns, in the location referenced by timerid, a timer ID of type  timer_t
     used  to  identify  the  timer  in timer requests.  This timer ID is unique
     within the calling process until the  timer  is  deleted.	 The  particular
     clock, clock_id, is defined in <time.h>.  The timer whose ID is returned is
     in a disarmed state upon return from timer_create().

     The evp argument, if non-NULL, points to a sigevent structure.  This struc-
     ture,  allocated  by the application, defines the asynchronous notification
     to occur when the timer expires.

     If evp->sigev_notify is SIGEV_SIGNO or SIGEV_THREAD_ID, the  signal  speci-
     fied  in evp->sigev_signo will be sent to the calling process (SIGEV_SIGNO)
     or  to   the   thread   whose   LWP   ID	is   evp->sigev_notify_thread_id
     (SIGEV_THREAD_ID).  The information for the queued signal will include:

     Member	 Value
     si_code	 SI_TIMER
     si_value	 the value stored in evp->sigev_value
     si_timerid  timer ID
     si_overrun  timer overrun count
     si_errno	 If  timer overrun is {DELAYTIMER_MAX}, an error code defined in
		 <errno.h>

     If the evp argument is NULL, the effect is as if the evp  argument  pointed
     to  a  sigevent  structure  with  the  sigev_notify member having the value
     SIGEV_SIGNAL, the sigev_signo having a default signal number (SIGALRM), and
     the sigev_value member having the value of the timer ID.

     This implementation supports a clock_id of  CLOCK_REALTIME,  CLOCK_TAI,  or
     CLOCK_MONOTONIC.

     If  evp->sigev_notify  is	SIGEV_THREAD and sev->sigev_notify_attributes is
     not NULL, if the attribute pointed to by sev->sigev_notify_attributes has a
     thread stack address specified by	a  call  to  pthread_attr_setstack()  or
     pthread_attr_setstackaddr(),  the	results are unspecified if the signal is
     generated more than once.

RETURN VALUES
     If the call succeeds, timer_create() returns zero and updates the	location
     referenced  by timerid to a timer_t, which can be passed to the per-process
     timer calls.  If an error occurs, the system call returns a value of -1 and
     the global variable errno is set to  indicate  the  error.   The  value  of
     timerid is undefined if an error occurs.

ERRORS
     The timer_create() system call will fail if:

     [EAGAIN]		The  calling  process  has  already  created  all of the
			timers it is allowed by this implementation.

     [EINVAL]		The specified clock ID is not supported.

     [EINVAL]		The specified asynchronous notification  method  is  not
			supported.

     [EFAULT]		Any  arguments point outside the allocated address space
			or there is a memory protection fault.

SEE ALSO
     clock_getres(2), timer_delete(2),	timer_getoverrun(2),  sigevent(3),  sig-
     info(3)

STANDARDS
     The   timer_create()   system   call   conforms  to  IEEE	Std  1003.1-2004
     ("POSIX.1").

HISTORY
     Support for POSIX per-process timer first appeared in FreeBSD 7.0.

FreeBSD ports 15.1		  July 15, 2016 		 TIMER_CREATE(2)

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

home | help