Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
IOCTL(2)		       System Calls Manual			IOCTL(2)

NAME
     ioctl -- control device

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <sys/ioctl.h>

     int
     ioctl(int fd, unsigned long request, ...);

DESCRIPTION
     The  ioctl()  system  call  manipulates the underlying device parameters of
     special files.  In particular, many operating characteristics of  character
     special  files  (e.g.  terminals)	may be controlled with ioctl() requests.
     The argument fd must be an open file descriptor.

     The third argument to ioctl() is traditionally named char *argp.  Most uses
     of ioctl(), however, require the third argument to be a caddr_t or an int.

     An ioctl() request has encoded in it whether the argument is an "in"  argu-
     ment or "out" argument, and the size of the argument argp in bytes.  Macros
     and  defines  used  in  specifying an ioctl request are located in the file
     <sys/ioctl.h>.

GENERIC IOCTLS
     Some generic ioctls are not implemented for all types of file  descriptors.
     These include:

     FIONREAD int
	     Get the number of bytes that are immediately available for reading.

     FIONWRITE int
	     Get  the  number  of  bytes  in the descriptor's send queue.  These
	     bytes are data which has been written to the descriptor  but  which
	     are being held by the kernel for further processing.  The nature of
	     the  required processing depends on the underlying device.  For TCP
	     sockets, these bytes have not yet been acknowledged  by  the  other
	     side of the connection.

     FIONSPACE int
	     Get  the  free space in the descriptor's send queue.  This value is
	     the size of the send queue minus the number of bytes being held  in
	     the  queue.   Note: while this value represents the number of bytes
	     that may be added to the  queue,  other  resource	limitations  may
	     cause a write not larger than the send queue's space to be blocked.
	     One  such limitation would be a lack of network buffers for a write
	     to a network connection.

RETURN VALUES
     If an error has occurred, a value of -1 is returned and errno is set to in-
     dicate the error.

ERRORS
     The ioctl() system call will fail if:

     [EACCES]		The process does not have permission to call this ioctl.

     [EBADF]		The fd argument is not a valid descriptor.

     [ENOTTY]		The fd argument is not associated with a character  spe-
			cial device.

     [ENOTTY]		The  specified request does not apply to the kind of ob-
			ject that the descriptor fd references.

     [EINVAL]		The request or argp argument is not valid.

     [EFAULT]		The argp argument points outside the process's allocated
			address space.

SEE ALSO
     execve(2), fcntl(2), intro(4), tty(4)

HISTORY
     The ioctl() function appeared in Version 7 AT&T UNIX.

FreeBSD ports 15.quarterly	December 29, 2025			IOCTL(2)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ioctl&sektion=2&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help