1*36b1b8b4Svisa.\" $OpenBSD: sigio_init.9,v 1.4 2020/01/08 16:27:40 visa Exp $ 2c2679576Svisa.\" 3c2679576Svisa.\" Copyright (c) 2018 Visa Hankala 4c2679576Svisa.\" 5c2679576Svisa.\" Permission to use, copy, modify, and distribute this software for any 6c2679576Svisa.\" purpose with or without fee is hereby granted, provided that the above 7c2679576Svisa.\" copyright notice and this permission notice appear in all copies. 8c2679576Svisa.\" 9c2679576Svisa.\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10c2679576Svisa.\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11c2679576Svisa.\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12c2679576Svisa.\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13c2679576Svisa.\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14c2679576Svisa.\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15c2679576Svisa.\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16c2679576Svisa.\" 17*36b1b8b4Svisa.Dd $Mdocdate: January 8 2020 $ 18c2679576Svisa.Dt SIGIO_INIT 9 19c2679576Svisa.Os 20c2679576Svisa.Sh NAME 21c2679576Svisa.Nm sigio_init , 22c2679576Svisa.Nm sigio_free , 23c2679576Svisa.Nm sigio_copy , 24c2679576Svisa.Nm sigio_setown , 25c2679576Svisa.Nm sigio_getown 26c2679576Svisa.Nd asynchronous IO signal API 27c2679576Svisa.Sh SYNOPSIS 28c2679576Svisa.In sys/sigio.h 29c2679576Svisa.Ft void 30c2679576Svisa.Fn "sigio_init" "struct sigio_ref *sir" 31c2679576Svisa.Ft void 32c2679576Svisa.Fn "sigio_free" "struct sigio_ref *sir" 33c2679576Svisa.Ft void 34c2679576Svisa.Fn "sigio_copy" "struct sigio_ref *dst" "struct sigio_ref *src" 35c2679576Svisa.Ft int 36*36b1b8b4Svisa.Fn "sigio_setown" "struct sigio_ref *sir" "u_long cmd" "caddr_t data" 37c2679576Svisa.Ft pid_t 38*36b1b8b4Svisa.Fn "sigio_getown" "struct sigio_ref *sir" "u_long cmd" "caddr_t data" 39c2679576Svisa.Sh DESCRIPTION 408811ffe6SjmcThe asynchronous IO signal API provides a means to manage signal registrations. 418811ffe6SjmcIt associates a process or process group with a signal source. 42c2679576SvisaThe association is revoked automatically when the process or process group 43c2679576Svisais deleted. 44c2679576Svisa.Pp 45c2679576Svisa.Fn sigio_init 46c2679576Svisainitializes the sigio reference 47c2679576Svisa.Fa sir . 48c2679576Svisa.Pp 49c2679576Svisa.Fn sigio_free 50c2679576Svisaclears any process or process group associated with reference 51c2679576Svisa.Fa sir . 52c2679576Svisa.Pp 53c2679576Svisa.Fn sigio_copy 54c2679576Svisacopies registration from reference 55c2679576Svisa.Fa src 56c2679576Svisato reference 57c2679576Svisa.Fa dst . 58c2679576Svisa.Pp 59c2679576Svisa.Fn sigio_setown 60c2679576Svisaassociates the reference 61c2679576Svisa.Fa sir 62c2679576Svisawith a process or process group. 63*36b1b8b4Svisa.Fa cmd 64*36b1b8b4Svisais one of ioctl commands 65*36b1b8b4Svisa.Dv FIOSETOWN , 66*36b1b8b4Svisa.Dv SIOCSPGRP 67*36b1b8b4Svisaand 68*36b1b8b4Svisa.Dv TIOCSPGRP . 69*36b1b8b4Svisa.Fa data 70*36b1b8b4Svisais a pointer to a signed integer that represents the ID of the owner 71*36b1b8b4Svisaof the registration. 72*36b1b8b4SvisaFor 73*36b1b8b4Svisa.Dv FIOSETOWN 74*36b1b8b4Svisaand 75*36b1b8b4Svisa.Dv SIOCSPGRP , 76*36b1b8b4Svisaa positive ID is taken as a process ID, 77*36b1b8b4Svisaand a negative ID is taken as a process group ID. 78c2679576SvisaIf 79*36b1b8b4Svisa.Fa cmd 80*36b1b8b4Svisais 81*36b1b8b4Svisa.Dv TIOCSPGRP , 82*36b1b8b4Svisaa positive ID is taken as a process group ID, 83*36b1b8b4Svisaand negative ID values are not allowed. 84*36b1b8b4SvisaFor all values of 85*36b1b8b4Svisa.Fa cmd , 86*36b1b8b4Svisathe reference 87c2679576Svisa.Fa sir 88*36b1b8b4Svisais cleared if the ID is zero. 89c2679576Svisa.Pp 90c2679576SvisaWhen 91c2679576Svisa.Fn sigio_setown 92c2679576Svisais called, the invoking process' credentials are stored in the reference. 93c2679576SvisaThese credentials are checked when the reference is used with 94c2679576Svisa.Xr pgsigio 9 . 95c2679576Svisa.Pp 96c2679576Svisa.Fn sigio_getown 97*36b1b8b4Svisastores the ID of the process or process group associated with the reference 98*36b1b8b4Svisa.Fa sir 99*36b1b8b4Svisato the signed integer pointed by 100*36b1b8b4Svisa.Fa data . 101*36b1b8b4Svisa.Fa cmd 102*36b1b8b4Svisais one of ioctl commands 103*36b1b8b4Svisa.Dv FIOGETOWN , 104*36b1b8b4Svisa.Dv SIOCGPGRP 105*36b1b8b4Svisaand 106*36b1b8b4Svisa.Dv TIOCGPGRP . 107*36b1b8b4SvisaFor 108*36b1b8b4Svisa.Dv FIOGETOWN 109*36b1b8b4Svisaand 110*36b1b8b4Svisa.Dv SIOCGPGRP , 111*36b1b8b4Svisaa process ID is stored as a positive ID, 112*36b1b8b4Svisaand a process group ID is stored as a negative ID. 113*36b1b8b4SvisaFor 114*36b1b8b4Svisa.Dv TIOCGPGRP , 115*36b1b8b4Svisaa process ID is stored as a negative ID, 116*36b1b8b4Svisaand a process group ID is stored as a positive ID. 117*36b1b8b4SvisaIf there is no registered owner, a zero is stored in the integer. 118c2679576Svisa.Sh CONTEXT 119c2679576Svisa.Fn sigio_init , 120c2679576Svisa.Fn sigio_free , 121c2679576Svisa.Fn sigio_copy , 122c2679576Svisa.Fn sigio_setown 123c2679576Svisaand 124c2679576Svisa.Fn sigio_getown 125c2679576Svisacan be called during autoconf, or from process context. 1263a6489edSvisa.Sh RETURN VALUES 1273a6489edSvisa.Fn sigio_setown 1283a6489edSvisareturns 0 on success. 1293a6489edSvisaOtherwise, the following error values are returned: 130*36b1b8b4Svisa.Bl -tag -width [EINVAL] 131*36b1b8b4Svisa.It Bq Er EINVAL 132*36b1b8b4SvisaThe process group ID is invalid. 1333a6489edSvisa.It Bq Er EPERM 1343a6489edSvisaThe invoking process belongs to another session than the process 135*36b1b8b4Svisaor process group. 1363a6489edSvisa.It Bq Er ESRCH 137*36b1b8b4SvisaThe process or process group does not exist. 1383a6489edSvisa.It Bq Er ESRCH 139*36b1b8b4SvisaThe process is exiting. 1403a6489edSvisa.El 141c2679576Svisa.Sh SEE ALSO 142c2679576Svisa.Xr pgsigio 9 143c2679576Svisa.Sh HISTORY 144c2679576SvisaThe sigio routines were adapted from 145c2679576Svisa.Fx 146c2679576Svisaand first appeared in 147c2679576Svisa.Ox 6.5 . 148