Skip to content
BSD syscall#83

svc · unix #83

setitimer

Arms or disarms one of the per-process interval timers.

Prototype

int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv);

Returns: int

Arguments

NameTypeDirDescription
whichu_int-
itvstruct itimerval-
oitvstruct itimerval-

Version history

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard83
xnu-1699.24.8macOS 10.7 Lion83
xnu-2050.18.24macOS 10.8 Mountain Lion83
xnu-2422.115.4macOS 10.9 Mavericks83
xnu-2782.40.9macOS 10.10 Yosemite83
xnu-3247.1.106macOS 10.11 El Capitan83
xnu-3789.1.32macOS 10.12 Sierra83
xnu-4570.1.46macOS 10.13 High Sierra83
xnu-4903.221.2macOS 10.14 Mojave83
xnu-6153.11.26macOS 10.15 Catalina83
xnu-7195.50.7.100.1macOS 11.0 Big Sur83
xnu-8019.41.5macOS 12.0 Monterey83
xnu-8792.41.9macOS 13.0 Ventura83
xnu-10002.1.13macOS 14.0 Sonoma83
xnu-11215.1.10macOS 15.0 Sequoia83
xnu-11417.101.15macOS 15.4 Sequoia83
xnu-12377.1.9macOS 26.0 Tahoe83
xnu-10002.41.983
xnu-10002.61.383
xnu-10002.81.583
xnu-10063.101.1583
xnu-10063.121.383
xnu-10063.141.183
xnu-11215.41.383
xnu-11215.61.583
xnu-11215.81.483
xnu-11417.121.683
xnu-11417.140.6983
xnu-12377.101.1583
xnu-12377.41.683
xnu-12377.61.1283
xnu-12377.81.483
xnu-1486.2.1183
xnu-1504.15.383
xnu-1504.3.1283
xnu-1504.7.483
xnu-1504.9.1783
xnu-1504.9.2683
xnu-1504.9.3783
xnu-1699.22.7383
xnu-1699.22.8183
xnu-1699.24.2383
xnu-1699.26.883
xnu-1699.32.783
xnu-2050.22.1383
xnu-2050.24.1583
xnu-2050.48.1183
xnu-2050.7.983
xnu-2050.9.283
xnu-2422.1.7283
xnu-2422.100.1383
xnu-2422.110.1783
xnu-2422.90.2083
xnu-2782.1.9783
xnu-2782.10.7283
xnu-2782.20.4883
xnu-2782.30.583
xnu-3247.10.1183
xnu-3248.20.5583
xnu-3248.30.483
xnu-3248.40.18483
xnu-3248.50.2183
xnu-3248.60.1083
xnu-3789.21.483
xnu-3789.31.283
xnu-3789.41.383
xnu-3789.51.283
xnu-3789.60.2483
xnu-3789.70.1683
xnu-4570.20.6283
xnu-4570.31.383
xnu-4570.41.283
xnu-4570.51.183
xnu-4570.61.183
xnu-4570.71.283
xnu-4903.231.483
xnu-4903.241.183
xnu-4903.270.4783
xnu-6153.101.683
xnu-6153.121.183
xnu-6153.141.183
xnu-6153.41.383
xnu-6153.61.183
xnu-6153.81.583
xnu-7195.101.183
xnu-7195.121.383
xnu-7195.141.283
xnu-7195.60.7583
xnu-7195.81.383
xnu-8019.61.583
xnu-8019.80.2483
xnu-8020.101.483
xnu-8020.121.383
xnu-8020.140.4183
xnu-8792.61.283
xnu-8792.81.283
xnu-8796.101.583
xnu-8796.121.283
xnu-8796.141.383

Examples

Fire SIGALRM every 500ms

#include <sys/time.h>

struct itimerval it = {
    .it_interval = { .tv_sec = 0, .tv_usec = 500000 },
    .it_value    = { .tv_sec = 0, .tv_usec = 500000 },
};
setitimer(ITIMER_REAL, &it, NULL);

Notes

Setting it_value to zero disarms the timer; setting it_interval to non-zero requests periodic firing. Signal delivery is best-effort and can be coalesced if the process cannot run handlers fast enough. Note that only one timer per kind exists per process, so libraries that quietly install one will collide with application code.

Related APIs

getitimersigactionsigsuspendgettimeofdaykill