GETITIMER(2) UNIX Programmer's Manual GETITIMER(2) NAME getitimer, setitimer - get/set value of interval timer SYNOPSIS #include #define ITIMER_REAL 0 /* real time intervals */ #define ITIMER_VIRTUAL 1 /* virtual time intervals */ #define ITIMER_PROF 2 /* user and system virtual time */ getitimer(which, value) int which; struct itimerval *value; setitimer(which, value, ovalue) int which; struct itimerval *value, *ovalue; DESCRIPTION The system provides each process with three interval timers, defined in <_s_y_s/_t_i_m_e._h>. The _g_e_t_i_t_i_m_e_r call returns the current value for the timer specified in _w_h_i_c_h in the struc- ture at _v_a_l_u_e. The _s_e_t_i_t_i_m_e_r call sets a timer to the specified _v_a_l_u_e (returning the previous value of the timer if _o_v_a_l_u_e is nonzero). A timer value is defined by the _i_t_i_m_e_r_v_a_l structure: struct itimerval { struct timeval it_interval; /* timer interval */ struct timeval it_value; /* current value */ }; If _i_t__v_a_l_u_e is non-zero, it indicates the time to the next timer expiration. If _i_t__i_n_t_e_r_v_a_l is non-zero, it specifies a value to be used in reloading _i_t__v_a_l_u_e when the timer expires. Setting _i_t__v_a_l_u_e to 0 disables a timer. Setting _i_t__i_n_t_e_r_v_a_l to 0 causes a timer to be disabled after its next expiration (assuming _i_t__v_a_l_u_e is non-zero). Time values smaller than the resolution of the system clock are rounded up to this resolution (on the VAX, 10 mil- liseconds). The ITIMER_REAL timer decrements in real time. A SIGALRM signal is delivered when this timer expires. The ITIMER_VIRTUAL timer decrements in process virtual time. It runs only when the process is executing. A SIGVTALRM signal is delivered when it expires. Printed 11/26/99 August 26, 1985 1 GETITIMER(2) UNIX Programmer's Manual GETITIMER(2) The ITIMER_PROF timer decrements both in process virtual time and when the system is running on behalf of the pro- cess. It is designed to be used by interpreters in statist- ically profiling the execution of interpreted programs. Each time the ITIMER_PROF timer expires, the SIGPROF signal is delivered. Because this signal may interrupt in-progress system calls, programs using this timer must be prepared to restart interrupted system calls. NOTES Three macros for manipulating time values are defined in <_s_y_s/_t_i_m_e._h>. _T_i_m_e_r_c_l_e_a_r sets a time value to zero, _t_i_m_e_r_- _i_s_s_e_t tests if a time value is non-zero, and _t_i_m_e_r_c_m_p com- pares two time values (beware that >= and <= do not work with this macro). NOTES (PDP-11) On the PDP-11, _s_e_t_i_t_i_m_e_r rounds timer values up to seconds resolution. (This saves some space and computation in the overburdened PDP-11 kernel.) RETURN VALUE If the calls succeed, a value of 0 is returned. If an error occurs, the value -1 is returned, and a more precise error code is placed in the global variable _e_r_r_n_o. ERRORS The possible errors are: [EFAULT] The _v_a_l_u_e parameter specified a bad address. [EINVAL] A _v_a_l_u_e parameter specified a time was too large to be handled. SEE ALSO sigvec(2), gettimeofday(2) Printed 11/26/99 August 26, 1985 2