]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man2/ioperm.2
ioperm.2: Clarify meaning of 'turn_on' argument
[thirdparty/man-pages.git] / man2 / ioperm.2
CommitLineData
fea681da
MK
1.\" Copyright (c) 1993 Michael Haardt
2.\" (michael@moria.de)
3.\" Fri Apr 2 11:32:09 MET DST 1993
c13182ef 4.\"
1dd72f9c 5.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
fea681da
MK
6.\" This is free documentation; you can redistribute it and/or
7.\" modify it under the terms of the GNU General Public License as
8.\" published by the Free Software Foundation; either version 2 of
9.\" the License, or (at your option) any later version.
10.\"
11.\" The GNU General Public License's references to "object code"
12.\" and "executables" are to be interpreted as the output of any
13.\" document formatting or typesetting system, including
14.\" intermediate and printed output.
15.\"
16.\" This manual is distributed in the hope that it will be useful,
17.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
18.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19.\" GNU General Public License for more details.
20.\"
21.\" You should have received a copy of the GNU General Public
c715f741
MK
22.\" License along with this manual; if not, see
23.\" <http://www.gnu.org/licenses/>.
6a8d8745 24.\" %%%LICENSE_END
fea681da
MK
25.\"
26.\" Modified Sat Jul 24 15:12:05 1993 by Rik Faith <faith@cs.unc.edu>
c13182ef 27.\" Modified Tue Aug 1 16:27 1995 by Jochen Karrer
fea681da
MK
28.\" <cip307@cip.physik.uni-wuerzburg.de>
29.\" Modified Tue Oct 22 08:11:14 EDT 1996 by Eric S. Raymond <esr@thyrsus.com>
30.\" Modified Mon Feb 15 17:28:41 CET 1999 by Andries E. Brouwer <aeb@cwi.nl>
c11b1abf 31.\" Modified, 27 May 2004, Michael Kerrisk <mtk.manpages@gmail.com>
fea681da
MK
32.\" Added notes on capability requirements
33.\"
5b9f466d 34.TH IOPERM 2 2013-03-12 "Linux" "Linux Programmer's Manual"
fea681da
MK
35.SH NAME
36ioperm \- set port input/output permissions
37.SH SYNOPSIS
38.B #include <unistd.h>
39/* for libc5 */
40.br
41.B #include <sys/io.h>
42/* for glibc */
43.sp
44.BI "int ioperm(unsigned long " from ", unsigned long " num ", int " turn_on );
45.SH DESCRIPTION
60a90ecd 46.BR ioperm ()
9a8235e2 47sets the port access permission bits for the calling thread for
c3ec5c77
MK
48.I num
49bits starting from port address
50.IR from .
51If
52.I turn_on
53is nonzero, then permission for the specified bits is enabled;
54otherwise it is disabled.
55If
56.I turn_on
57is nonzero, the calling thread must be privileged
5bb80360 58.RB ( CAP_SYS_RAWIO ).
fea681da 59
5b9f466d
MK
60Before Linux 2.6.8,
61only the first 0x3ff I/O ports could be specified in this manner.
f3634346 62For more ports, the
0bfa087b 63.BR iopl (2)
5b9f466d
MK
64system call had to be used.
65Since Linux 2.6.8, 65,536 I/O ports can be specified.
51a138ce
MK
66
67Permissions are not inherited by the child created by
daabaf99
MK
68.BR fork (2);
69following a
70.BR fork (2)
71the child must turn on those permissions that it needs.
51a138ce
MK
72Permissions are preserved across
73.BR execve (2);
60b9e97c 74this is useful for giving port access permissions to unprivileged
51a138ce 75programs.
fea681da
MK
76
77This call is mostly for the i386 architecture.
78On many other architectures it does not exist or will always
79return an error.
47297adb 80.SH RETURN VALUE
c13182ef
MK
81On success, zero is returned.
82On error, \-1 is returned, and
fea681da
MK
83.I errno
84is set appropriately.
85.SH ERRORS
86.TP
87.B EINVAL
88Invalid values for
89.I from
90or
91.IR num .
92.TP
93.B EIO
51a138ce 94(on PowerPC) This call is not supported.
fea681da 95.TP
f3634346
MK
96.B ENOMEM
97.\" Could not allocate I/O bitmap.
98Out of memory.
99.TP
fea681da 100.B EPERM
9a8235e2 101The calling thread has insufficient privilege.
47297adb 102.SH CONFORMING TO
60a90ecd 103.BR ioperm ()
8382f16d 104is Linux-specific and should not be used in programs
fea681da
MK
105intended to be portable.
106.SH NOTES
107Libc5 treats it as a system call and has a prototype in
108.IR <unistd.h> .
c13182ef 109Glibc1 does not have a prototype.
f3634346 110Glibc2 has a prototype both in
fea681da
MK
111.I <sys/io.h>
112and in
113.IR <sys/perm.h> .
114Avoid the latter, it is available on i386 only.
47297adb 115.SH SEE ALSO
fea681da
MK
116.BR iopl (2),
117.BR capabilities (7)