@node ioctl
@section @code{ioctl}
@findex ioctl

POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/ioctl.html}

LSB specification:
@itemize
@item
@url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-ioctl-2.html}
@item
@url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-ttyio-2.html}
@item
@url{https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/baselib-sockio-2.html}
@end itemize

Gnulib module: ioctl

Portability problems fixed by Gnulib:
@itemize
@item
On Windows platforms (excluding Cygwin), @code{ioctl} is called
@code{ioctlsocket}, and error codes from this function are not placed in
@code{errno}, and @code{WSAGetLastError} must be used instead.
@item
The second parameter is of type @code{unsigned long} rather than @code{int}
on some platforms:
glibc 2.26, macOS 11.1, FreeBSD 13.0, NetBSD 9.0, OpenBSD 6.7, Haiku 2017.
@end itemize

Portability problems not fixed by Gnulib:
@itemize
@item
Most @code{ioctl} requests are platform and hardware specific.
@end itemize
