Rev | Author | # | Line |
---|---|---|---|
1 | perry | 1 | !!NAME |
2 | PerryLorier | 2 | iopl - change I/O privilege level |
1 | perry | 3 | |
4 | !!SYNOPSIS | ||
2 | PerryLorier | 5 | __#include <sys/io.h>__ |
1 | perry | 6 | |
2 | PerryLorier | 7 | __int iopl(int__ ''level''__);__ |
1 | perry | 8 | !!DESCRIPTION |
2 | PerryLorier | 9 | iopl(2) changes the I/O privilege level of the current process, as specified in ''level''. |
1 | perry | 10 | |
2 | PerryLorier | 11 | This call is necessary to allow 8514-compatible X servers to run under Linux. Since these X servers require access to all 65536 I/O ports, the ioperm(2) call is not |
1 | perry | 12 | sufficient. |
13 | |||
2 | PerryLorier | 14 | In addition to granting unrestricted I/O port access, running at a higher I/O privilege level also allows the process to disable interrupts. This will probably crash the system, and is not recommended. |
1 | perry | 15 | |
16 | Permissions are inherited by fork and exec. | ||
17 | |||
2 | PerryLorier | 18 | The I/O privilege level for a normal process is 0. |
1 | perry | 19 | |
20 | !!RETURN VALUE | ||
2 | PerryLorier | 21 | On success, zero is returned. On error, -1 is returned, and ''errno'' is set appropriately. |
1 | perry | 22 | !!ERRORS |
2 | PerryLorier | 23 | ;[EINVAL]: ''level'' is greater than 3. |
24 | ;[EPERM]: The current user is not the super-user. | ||
1 | perry | 25 | |
26 | !!NOTES FROM THE KERNEL SOURCE | ||
2 | PerryLorier | 27 | iopl(2) has to be used when you want to access the I/O ports beyond the 0x3ff range: to get the full 65536 ports bitmapped you'd need 8kB of bitmaps/process, which is a bit excessive. |
1 | perry | 28 | |
29 | !!CONFORMING TO | ||
2 | PerryLorier | 30 | iopl(2) is Linux specific and should not be used in processes intended to be portable. |
1 | perry | 31 | |
32 | !!COMPATIBILITY | ||
2 | PerryLorier | 33 | Under libc5, the prototype for __iopl__() was given in ''<unistd.h>''. Glibc1 does not have a prototype. Glibc2 has a prototype both in <sys/io.h> and in <sys/perm.h>. Avoid the latter, it is available on i386 only. |
1 | perry | 34 | |
35 | !!SEE ALSO | ||
36 | ioperm(2) |
lib/blame.php:177: Warning: Invalid argument supplied for foreach() (...repeated 9 times)