FSETOWN(9)

FSETOWN(9) | Kernel Developer's Manual | FSETOWN(9)

# NAME

`fsetown`, `fgetown`, `fownsignal` —
file descriptor owner handling functions

# SYNOPSIS

`#include <sys/file.h>`

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 NetBSD 2.0.

December 20, 2005 | NetBSD 10.1