]>
Commit | Line | Data |
---|---|---|
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 |
36 | ioperm \- 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 | 47 | sets the port access permission bits for the calling thread for |
c3ec5c77 MK |
48 | .I num |
49 | bits starting from port address | |
50 | .IR from . | |
51 | If | |
52 | .I turn_on | |
53 | is nonzero, then permission for the specified bits is enabled; | |
54 | otherwise it is disabled. | |
55 | If | |
56 | .I turn_on | |
57 | is nonzero, the calling thread must be privileged | |
5bb80360 | 58 | .RB ( CAP_SYS_RAWIO ). |
fea681da | 59 | |
5b9f466d MK |
60 | Before Linux 2.6.8, |
61 | only the first 0x3ff I/O ports could be specified in this manner. | |
f3634346 | 62 | For more ports, the |
0bfa087b | 63 | .BR iopl (2) |
5b9f466d MK |
64 | system call had to be used. |
65 | Since Linux 2.6.8, 65,536 I/O ports can be specified. | |
51a138ce MK |
66 | |
67 | Permissions are not inherited by the child created by | |
daabaf99 MK |
68 | .BR fork (2); |
69 | following a | |
70 | .BR fork (2) | |
71 | the child must turn on those permissions that it needs. | |
51a138ce MK |
72 | Permissions are preserved across |
73 | .BR execve (2); | |
60b9e97c | 74 | this is useful for giving port access permissions to unprivileged |
51a138ce | 75 | programs. |
fea681da MK |
76 | |
77 | This call is mostly for the i386 architecture. | |
78 | On many other architectures it does not exist or will always | |
79 | return an error. | |
47297adb | 80 | .SH RETURN VALUE |
c13182ef MK |
81 | On success, zero is returned. |
82 | On error, \-1 is returned, and | |
fea681da MK |
83 | .I errno |
84 | is set appropriately. | |
85 | .SH ERRORS | |
86 | .TP | |
87 | .B EINVAL | |
88 | Invalid values for | |
89 | .I from | |
90 | or | |
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. | |
98 | Out of memory. | |
99 | .TP | |
fea681da | 100 | .B EPERM |
9a8235e2 | 101 | The calling thread has insufficient privilege. |
47297adb | 102 | .SH CONFORMING TO |
60a90ecd | 103 | .BR ioperm () |
8382f16d | 104 | is Linux-specific and should not be used in programs |
fea681da MK |
105 | intended to be portable. |
106 | .SH NOTES | |
107 | Libc5 treats it as a system call and has a prototype in | |
108 | .IR <unistd.h> . | |
c13182ef | 109 | Glibc1 does not have a prototype. |
f3634346 | 110 | Glibc2 has a prototype both in |
fea681da MK |
111 | .I <sys/io.h> |
112 | and in | |
113 | .IR <sys/perm.h> . | |
114 | Avoid the latter, it is available on i386 only. | |
47297adb | 115 | .SH SEE ALSO |
fea681da MK |
116 | .BR iopl (2), |
117 | .BR capabilities (7) |