GETITIMER(2) 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 structure 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 expi‐ ration. 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 dis‐ ables 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 milliseconds). 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. The ITIMER_PROF timer decrements both in process virtual time and when the system is running on behalf of the process. It is designed to be used by interpreters in statistically profiling the execution of inter‐ preted 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 compares two time values (beware that >= and <= do not work with this macro). 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) 4.2 Berkeley Distribution August 26, 1985 GETITIMER(2)