NAME

     iopl - change I/O privilege level


SYNOPSIS

     #include <unistd.h>

     int iopl(int level));


DESCRIPTION

     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 sufficient.

     In addition to granting unrestricted I/O port  access,  run-
     ning 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.


RETURN VALUE

     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.


GLIBC NOTE

     Under  libc5,  the  prototype  for  iopl()   is   given   in
     <unistd.h>, but glibc2 has this prototype in <sys/io.h>.


NOTES FROM THE KERNEL SOURCE

     iopl has to be used when you want to access  the  I/O  ports
     beyond  the  0x3ff  range:  to get the full 65536 ports bit-
     mapped you'd need 8kB of bitmaps/process,  which  is  a  bit
     excessive.


CONFORMING TO

     iopl is Linux specific and should not be used  in  processes
     intended to be portable.


SEE ALSO

     ioperm(2)