diff options
author | Jerry Jelinek <jerry.jelinek@joyent.com> | 2015-10-19 12:24:35 +0000 |
---|---|---|
committer | Jerry Jelinek <jerry.jelinek@joyent.com> | 2015-10-19 12:24:35 +0000 |
commit | 16ffff491e3c6443c7c0987b8738218c9e43594d (patch) | |
tree | 2dbdf1be46a7b46a5344ceca7a4d991d9a9f8504 /usr/src/man/man3c/timerfd_create.3c | |
parent | f1ecf18129ec0b371c3adcd0cecac5593434cb8e (diff) | |
parent | 2a446632681882e5dfe50f2f301401588f1ce734 (diff) | |
download | illumos-joyent-16ffff491e3c6443c7c0987b8738218c9e43594d.tar.gz |
[illumos-gate merge]
commit 2a446632681882e5dfe50f2f301401588f1ce734
6328 Fix cstyle errors in zfs codebase (fix studio)
commit 61679b0b6826b0ae7e3f751acd91412fcfa45d1e
commit 9a686fbc186e8e2a64e9a5094d44c7d6fa0ea167
6328 Fix cstyle errors in zfs codebase
commit 21227944c2bcc086121a5428f3f9d2496ba646f5
5876 sys/regset.h pollutes name space
commit 6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbf
6208 add support for timerfd
commit f3bb54f387fc03cf651e19bbee54cc88ee51bb29
6291 nested epoll does not mimic Linux behavior
commit a5eb7107f06a6e23e8e77e8d3a84c1ff90a73ac6
5640 want epoll support
commit 7509ca605713ac7f244b0e812b1712dd25f04da1
6027 EOL zulu (XVR-4000)
commit e7df7762bfed06e996cc80f583cbee2d8ed81d69
6324 Add an `ndp' tool for manipulating the neighbors table
Conflicts:
usr/src/uts/common/io/timerfd.c
usr/src/uts/common/io/devpoll.c
usr/src/man/man9e/chpoll.9e
usr/src/man/man5/timerfd.5
usr/src/man/man5/epoll.5
usr/src/man/man3c/timerfd_create.3c
usr/src/man/man3c/epoll_wait.3c
usr/src/man/man3c/epoll_ctl.3c
usr/src/man/man3c/epoll_create.3c
usr/src/cmd/cmd-inet/usr.sbin/ndp.c
Diffstat (limited to 'usr/src/man/man3c/timerfd_create.3c')
-rw-r--r-- | usr/src/man/man3c/timerfd_create.3c | 358 |
1 files changed, 189 insertions, 169 deletions
diff --git a/usr/src/man/man3c/timerfd_create.3c b/usr/src/man/man3c/timerfd_create.3c index 167b905d1e..84df47e245 100644 --- a/usr/src/man/man3c/timerfd_create.3c +++ b/usr/src/man/man3c/timerfd_create.3c @@ -1,181 +1,201 @@ -'\" te -.\" Copyright (c) 2014, Joyent, Inc. All Rights Reserved. -.\" This file and its contents are supplied under the terms of the -.\" Common Development and Distribution License ("CDDL"), version 1.0. -.\" You may only use this file in accordance with the terms of version -.\" 1.0 of the CDDL. -.\" -.\" A full copy of the text of the CDDL should have accompanied this -.\" source. A copy of the CDDL is also available via the Internet at -.\" http://www.illumos.org/license/CDDL. -.TH TIMERFD 3C "Feb 23, 2015" -.SH NAME -timerfd_create, timerfd_settime, timerfd_gettime \- create and manipulate -timers via a file descriptor interface -.SH SYNOPSIS - -.LP -.nf -#include <sys/timerfd.h> - -\fBint\fR \fBtimerfd_create\fR(\fBint\fR \fIclockid\fR, \fBint\fR \fIflags\fR); -.fi - -.LP -.nf -\fBint\fR \fBtimerfd_settime\fR(\fBint\fR \fIfd\fR, \fBint\fR \fIflags\fR, - \fBconst struct itimerspec *restrict\fR \fIvalue\fR, - \fBstruct itimerspec *restrict\fR \fIovalue\fR); -.fi - -.LP -.nf -\fBint\fR \fBtimerfd_gettime\fR(\fBint\fR \fIfd\fR, \fBstruct itimerspec *\fR\fIvalue\fR); -.fi - -.SH DESCRIPTION -.sp -.LP +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright (c) 2015, Joyent, Inc. All Rights Reserved. +.\" +.Dd Feb 23, 2105 +.Dt TIMERFD 3C +.Os +.Sh NAME +.Nm timerfd_create , +.Nm timerfd_settime , +.Nm timerfd_gettime +.Nd create and manipulate timers via a file descriptor interface +.Sh SYNOPSIS +.In sys/timerfd.h +.Ft int +.Fo timerfd_create +.Fa "int clockid" +.Fa "int flags" +.Fc +.Ft int +.Fo timerfd_settime +.Fa "int fd" +.Fa "int flags" +.Fa "const struct itimerspec *restrict value" +.Fa "struct itimterspec *restrict ovalue" +.Fc +.Ft int +.Fo timerfd_gettime +.Fa "int fd" +.Fa "struct itimerspec *value" +.Fc +.Sh DESCRIPTION These routines create and manipulate timers in which events are associated with a file descriptor, allowing for timer-based events to be used -in file-descriptor based facilities like -\fBpoll\fR(2), \fBport_get\fR(3C) or \fBepoll_wait\fR(3C). - -The \fBtimerfd_create()\fR function creates a timer with the clock -type specified by \fIclockid\fR. The \fBCLOCK_REALTIME\fR and -\fBCLOCK_HIGHRES\fR clock types, as defined in \fBtimer_create\fR(3C), -are supported by \fBtimerfd_create()\fR. (Note that \fBCLOCK_MONOTONIC\fR -may be used as an alias for \fBCLOCK_HIGHRES\fR.) - -.sp -The \fIflags\fR argument specifies additional parameters for the -timer instance, and can have any of the following values: - -.sp -.ne 2 -.na -\fBTFD_CLOEXEC\fR -.ad -.RS 12n +in file-descriptor based facilities like +.Xr poll 2 , +.Xr port_get 3C +or +.Xr epoll_wait 3C . +The +.Fn timerfd_create +function creates a timer with the clock +type specified by +.Fa clockid . +The +.Sy CLOCK_REALTIME +and +.Sy CLOCK_HIGHRES +clock types, as defined in +.Xr timer_create 3C , +are supported by +.Fn timerfd_create . +(Note that +.Sy CLOCK_MONOTONIC +may be used as an alias for +.Sy CLOCK_HIGHRES Ns .) +.Pp +The +.Fa flags +argument specifies additional parameters for the timer instance, and can have +any of the following values: +.Bl -hang -width Ds +.It Sy TFD_CLOEXEC +.Bd -filled -compact Instance will be closed upon an -\fBexec\fR(2); see \fBopen\fR(2)'s description of \fBO_CLOEXEC\fR. -.RE - -.sp -.ne 2 -.na -\fBTFD_NONBLOCK\fR -.ad -.RS 12n -Instance will be set to be non-blocking. A \fBread\fR(2) on a -\fBtimerfd\fR instance that has been initialized with -\fBTFD_NONBLOCK\fR will return \fBEAGAIN\fR in lieu of blocking if the -timer has not expired since the last \fBtimerfd_settime()\fR or successful -\fBread()\fR. -.RE - -.sp -The following operations can be performed upon a \fBtimerfd\fR instance: - -.sp -.ne 2 -.na -\fBread\fR(2) -.ad -.RS 12n +.Xr exec 2 ; +see +.Xr open 2 Ns 's +description of +.Sy O_CLOEXEC . +.Ed +.It Sy TFD_NONBLOCK +.Bd -filled -compact +Instance will be set to be non-blocking. A +.Xr read 2 +on a +.Sy timerfd +instance that has been initialized with +.Sy TFD_NONBLOCK +will return +.Sy EAGAIN +in lieu of blocking if the +timer has not expired since the last +.Fn timerfd_settime +or successful +.Fn read . +.Ed +.El +.Pp +The following operations can be performed upon a +.Sy timerfd +instance: +.Bl -hang -width Ds +.It Sy read(2) +.Bd -filled -compact Atomically reads and clears the number of timer expirations since the -last successful \fBread\fR(2) or \fBtimerfd_settime()\fR. Upon success, +last successful +.Xr read 2 +or +.Fn timerfd_settime . +Upon success, the number of expirations will be copied into the eight byte buffer passed to the system call. If there have been no expirations of the -timer since the last successful \fBread\fR(2) or \fBtimerfd_settime()\fR, -\fBread\fR(2) will block until at least the next expiration, -or return \fBEAGAIN\fR if the instance was created with -\fBTFD_NONBLOCK\fR. Note that if multiple threads are blocked in -\fBread\fR(2) for the same timer, only one of them will return upon +timer since the last successful +.Xr read 2 +or +.Fn timerfd_sttime , +.Xr read 2 +will block until at least the next expiration, +or return +.Sy EAGAIN +if the instance was created with +.Sy TFD_NONBLOCK . +Note that if multiple threads are blocked in +.Xr read 2 +for the same timer, only one of them will return upon a single timer expiration. - -If the buffer specified to \fBread\fR(2) is less than -eight bytes in length, \fBEINVAL\fR will be returned. -.RE - -.sp -.ne 2 -.na -\fBpoll\fR(2), \fBport_get\fR(3C), \fBepoll_wait\fR(3C) -.ad -.RS 12n +.Pp +If the buffer specified to +.Xr read 2 +is less than +eight bytes in length, +.Sy EINAVL +will be returned. +.Ed +.It Sy poll(2), port_get(3C), epoll_wait(3C) +.Bd -filled -compact Provide notification when the timer expires or has expired in the past without -a more recent \fBread\fR(2). Note that threads being simultaneously -blocked in \fBread\fR(2) and \fBpoll\fR(2) (or equivalents) for the same +a more recent +.Xr read 2 . +Note that threads being simultaneously +blocked in +.Xr read 2 +and +.Xr poll 2 +(or equivalents) for the same timer constitute an application-level race; on a timer expiration, -the thread blocked in \fBpoll\fR(2) may or may not return depending on how -it is scheduled with respect to the thread blocked in \fBread\fR(2). -.RE - -.sp -.ne 2 -.na -\fBtimerfd_gettime()\fR -.ad -.RS 12n +the thread blocked in +.Xr poll 2 +may or may not return depending on how +it is scheduled with respect to the thread blocked in +.Xr read 2 . +.Ed +.It Sy timerfd_gettime() +.Bd -filled -compact Returns the amount of time until the next timer expiration, with the -same functional signature and semantics as \fBtimer_gettime\fR(3C). -.RE - -.sp -.ne 2 -.na -\fBtimerfd_settime()\fR -.ad -.RS 12n +same functional signature and semantics as +.Xr timer_gettime 3C . +.Ed +.It Sy timerfd_settime() +.Bd -filled -compact Sets or disarms the timer, with the -same functional signature and semantics as \fBtimer_settime\fR(3C). -.RE - -.SH RETURN VALUES -.sp -.LP +same functional signature and semantics as +.Xr timer_settime 3C . +.Ed +.El +.Sh RETURN VALUES Upon succesful completion, a file descriptor associated with the instance -is returned. Otherwise, -1 is returned and errno -is set to indicate the error. -.SH ERRORS -.sp -.LP -The \fBtimerfd_create()\fR function will fail if: -.sp -.ne 2 -.na -\fB\fBEINVAL\fR\fR -.ad -.RS 10n -The \fIflags\fR are invalid. -.RE - -.sp -.ne 2 -.na -\fB\fBEMFILE\fR\fR -.ad -.RS 10n -There are currently {\fBOPEN_MAX\fR} file descriptors open in the calling -process. -.RE - -.sp -.ne 2 -.na -\fB\fBEPERM\fR\fR -.ad -.RS 10n -The \fIclock_id\fR, is \fBCLOCK_HIGHRES\fR and the -{\fBPRIV_PROC_CLOCK_HIGHRES\fR} is not asserted in the effective set of the -calling process. -.RE - -.SH SEE ALSO -.sp -.LP -\fBpoll\fR(2), \fBport_get\fR(3C), \fBepoll_wait\fR(3C), -\fBtimer_create\fR(3C), \fBtimer_gettime\fR(3C), \fBtimer_settime\fR(3C), -\fBprivileges\fR(5), \fBtimerfd\fR(5) - +is returned. Otherwise, +.Sy -1 +is returned and errno is set to indicate the error. +.Sh ERRORS +The +.Fn timerfd_create() +function will fail if: +.Bl -tag -width Er +.It Er EINAL +The +.Fa flags +are invalid. +.It Er EMFILE +There are currently +.Pf { Sy OPEN_MAX Ns } +file descriptors open in the calling process. +.It Er EPERM +The +.Fa clock_id , +is +.Sy CLOCK_HIGHRES +and the +.Pf { Sy PRIV_PROC_CLOCK_HIGHRES Ns } +is not asserted in the effective set of the calling process. +.El +.Sh SEE ALSO +.Xr poll 2 , +.Xr port_get 3C , +.Xr epoll_wait 3C , +.Xr timer_create 3C , +.Xr timer_gettime 3C , +.Xr timer_settime 3C , +.Xr privileages 5 , +.Xr timerfd 5 |