December 20, 2005 FSETOWN 9

### NAME

fsetown, fgetown, fownsignal - file descriptor owner handling functions

### SYNOPSIS

```int` fsetown(```struct lwp *l``, pid_t *pgid``, int cmd``, const void *data`)
```int` fgetown(```struct lwp *l``, pid_t pgid``, int cmd``, void *data`)
```void` fownsignal(```pid_t pgid``, int signo``, int code``, int band``, void *fdescdata`)

### DESCRIPTION

These functions handle file descriptor owner related ioctls and related signal delivery. Device drivers and other parts of the kernel call these functions from ioctl entry functions or I/O notification functions.

fsetown(``) sets the owner of file. ```cmd` is an ioctl command, one of ```SIOCSPGRP`, ```FIOSETOWN`, and ```TIOCSPGRP`. ```data` is interpreted as a pointer to a signed integer, the integer being the ID of the owner. The ```cmd` determines how exactly ```data` should be interpreted. If ```cmd` is ```TIOCSPGRP`, the ID needs to be positive and is interpreted as process group ID. For ```SIOCSPGRP` and ```FIOSETOWN`, the passed ID is the process ID if positive, or the process group ID if negative.

fgetown(``) returns the current owner of the file. ```cmd` is an ioctl command, one of ```SIOCGPGRP`, ```FIOGETOWN`, and ```TIOCGPGRP`. ```data` is interpreted as a pointer to a signed integer, and the value is set according to the passed ```cmd`. For ```TIOCGPGRP`, the returned ```data` value is positive process group ID if the owner is the process group, or negative process ID if the owner is a process. For other ioctls, the returned value is the positive process ID if the owner is a process, or the negative process group ID if the owner is a process group.

fownsignal(``) schedules the ```signo` signal to be sent to the current file descriptor owner. The signals typically used with this function are ```SIGIO` and ```SIGURG`. The ```code` and ```band` arguments are sent along with the signal as additional signal specific information if ```SA_SIGINFO` is activated. If the information is not available from the context of the fownsignal(``) call, these should be passed as zero. ```fdescdata` is used to lookup the file descriptor for ```SA_SIGINFO` signals. If it is specified, the file descriptor number is sent along with the signal as additional signal specific information. If file descriptor data pointer is not available in the context of the fownsignal(``) call, ```NULL` should be used instead.

Note that a fcntl(2) ```F_SETOWN` `request` is translated by the kernel to a ```FIOSETOWN` ioctl, and ```F_GETOWN` is translated to ```FIOGETOWN`. This is done transparently by generic code, before the device- or subsystem-specific ioctl entry function is called.

### SEE ALSO

fcntl(2), siginfo(2), signal(7), ioctl(9), signal(9)

### HISTORY

These kernel functions appeared in NetBSD2.0.