Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/lib/libc/sys Make the ioctl prototype reflect reality and ex...
details: https://anonhg.NetBSD.org/src/rev/e44660afd44c
branches: trunk
changeset: 759894:e44660afd44c
user: christos <christos%NetBSD.org@localhost>
date: Sun Dec 19 16:54:10 2010 +0000
description:
Make the ioctl prototype reflect reality and explain why. Also mention that
the generic file descriptor manipulation ioctls are superceded by the
equivalent fcntl one.
diffstat:
lib/libc/sys/ioctl.2 | 79 ++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 61 insertions(+), 18 deletions(-)
diffs (140 lines):
diff -r 6d998b73a518 -r e44660afd44c lib/libc/sys/ioctl.2
--- a/lib/libc/sys/ioctl.2 Sun Dec 19 16:25:16 2010 +0000
+++ b/lib/libc/sys/ioctl.2 Sun Dec 19 16:54:10 2010 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: ioctl.2,v 1.21 2010/05/11 16:17:18 mbalmer Exp $
+.\" $NetBSD: ioctl.2,v 1.22 2010/12/19 16:54:10 christos Exp $
.\"
.\" Copyright (c) 1980, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@@ -29,7 +29,7 @@
.\"
.\" @(#)ioctl.2 8.2 (Berkeley) 12/11/93
.\"
-.Dd May 11, 2010
+.Dd December 19, 2010
.Dt IOCTL 2
.Os
.Sh NAME
@@ -40,7 +40,7 @@
.Sh SYNOPSIS
.In sys/ioctl.h
.Ft int
-.Fn ioctl "int d" "unsigned long request" "void *argp"
+.Fn ioctl "int d" "unsigned long request" "..."
.Sh DESCRIPTION
The
.Fn ioctl
@@ -54,20 +54,26 @@
.Fa d
must be an open file descriptor.
.Pp
-An ioctl
+An
+.Fn ioctl
.Fa request
has encoded in it whether the argument is an
-.Dq in
-parameter
+.Dq in ,
+.Dq out ,
or
-.Dq out
-parameter, and the size of the argument
-.Fa argp
+.Dq inout
+parameter, and the size of the first varyadic argument
in bytes.
-Macros and defines used in specifying an ioctl
+Note that there can be only one varyadic argument but cannot be represented as
+a
+.Ft "void *"
+argument in the prototype because this would require a cast to pass integral
+types without warnings.
+Macros and defines used in specifying an
+.Fn ioctl
.Fa request
-are located in the file
-.Ao Pa sys/ioctl.h Ac .
+are located in the header
+.In sys/ioctl.h .
.Sh GENERIC IOCTLS
Some ioctls are applicable to any file descriptor.
These include:
@@ -76,11 +82,25 @@
Set close-on-exec flag.
The file will be closed when
.Xr exec 3
-is invoked.
+is invoked
+(This is equivalent to
+.Fn fcntl
+.Dv F_SETFD
+.Dv FD_CLOEXEC
+and the
+.Fn fcntl
+form should be preferred).
.It Dv FIONCLEX
Clear close-on-exec flag.
The file will remain open across
-.Xr exec 3 .
+.Xr exec 3
+(This is equivalent to
+.Fn fcntl
+.Dv F_SETFD
+.Dv 0
+and the
+.Fn fcntl
+form should be preferred).
.El
.Pp
Some generic ioctls are not implemented for all types of file
@@ -115,13 +135,29 @@
.Xr read 2
or
.Xr write 2
-calls return \-1 and set
+calls return
+.Dv \-1
+and set
.Va errno
to
.Er EAGAIN
-immediately when no data is available.
+immediately when no data is available
+(This is equivalent to
+.Fn fcntl
+.Dv F_SETFL
+.Dv O_NONBLOCK
+and the
+.Fn fcntl
+form should be preferred).
.It Dv FIOASYNC "int"
-Set asynchronous I/O mode if the argument is non-zero.
+Set asynchronous I/O mode if the argument is non-zero
+(This is equivalent to
+.Fn fcntl
+.Dv F_SETFL
+.Dv O_ASYNC
+and the
+.Fn fcntl
+form should be preferred).
In asynchronous mode, the process or process group specified by
.Dv FIOSETOWN
will start receiving
@@ -134,7 +170,14 @@
.It Dv FIOSETOWN, FIOGETOWN "int"
Set/get the process or the process group (if negative) that should receive
.Dv SIGIO
-signals when data is available.
+signals when data is available
+(This is equivalent to
+.Fn fcntl
+.Dv F_SETOWN
+.Ft pid_t
+and the
+.Ft fcntl
+form should be preferred).
.El
.Sh RETURN VALUES
If an error has occurred, a value of \-1 is returned and
Home |
Main Index |
Thread Index |
Old Index