Differences between current version and revision by previous author of iopl(2).
Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History
Newer page: | version 2 | Last edited on Thursday, February 20, 2003 11:39:40 pm | by PerryLorier | |
Older page: | version 1 | Last edited on Tuesday, June 4, 2002 12:23:42 am | by perry | Revert |
@@ -1,87 +1,36 @@
-IOPL
-!!!IOPL
-NAME
-SYNOPSIS
-DESCRIPTION
-RETURN VALUE
-ERRORS
-NOTES FROM THE KERNEL SOURCE
-CONFORMING TO
-COMPATIBILITY
-SEE ALSO
-----
!!NAME
+iopl - change I/O privilege level
-
-iopl - change I/O privilege level
!!SYNOPSIS
+ __#include <sys/io.h>__
-
-__#include __
-
-
-
__int iopl(int__ ''level''__);__
+
__int iopl(int__ ''level''__);__
!!DESCRIPTION
+iopl(2) changes the I/O privilege level of the current process, as specified in ''level''.
-
-__iopl__ changes the I/O privilege level of the current
-process, as specified in ''level''.
-
-
-
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__
call is not
+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
sufficient.
-
-
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.
-
+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.
Permissions are inherited by fork and exec.
+The I/O privilege level for a normal process is 0.
-The I/O privilege level for a normal process is
-0.
!!RETURN VALUE
-
-
-
On success, zero is returned. On error, -1 is returned, and
-
''errno'' is set appropriately.
+On success, zero is returned. On error, -1 is returned, and ''errno'' is set appropriately.
!!ERRORS
+;[EINVAL]: ''level'' is greater than 3.
+;[EPERM]: The current user is not the super-user.
-
-__EINVAL__
-
-
-''level'' is greater than 3.
-
-
-__EPERM__
-
-
-The current user is not the super-user.
!!NOTES FROM THE KERNEL SOURCE
+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.
-
-__iopl__ 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.
!!CONFORMING TO
+iopl(2) is Linux specific and should not be used in processes intended to be portable.
-
-__iopl__ is Linux specific and should not be used in
-processes intended to be portable.
!!COMPATIBILITY
+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.
-
-Under libc5, the prototype for __iopl__() was given in
-''''.
!!SEE ALSO
-
-
ioperm(2)
-----