NOMBRE¶
iopl - cambia nivel de privilegio de E/S
SINOPSIS¶
#include <sys/io.h>
int iopl(int nivel);
DESCRIPCIÓN¶
iopl cambia el nivel de privilegio de E/S del proceso en curso,
según se especifique en
nivel.
Esta llamada es necesaria para permitir a los servidores X compatibles con las
tarjetas de vídeo 8514 ejecutarse en Linux. Puesto que estos servidores
X Window requieren acceso a todos los 65536 puertos de E/S, la llamada a
ioperm no basta.
Además de otorgar acceso sin restricciones a los puertos de E/S, la
ejecución a un nivel de privilegio de E/S más alto
también permite al proceso inhabilitar las interrupciones. Esto
probablemente echará abajo el sistema, y no se recomienda pues.
Los permisos son heredados por fork() y exec().
El nivel de privilegio de E/S para un proceso normal es 0.
VALOR DEVUELTO¶
En caso de éxito, se devuelve cero. En caso de error, se devuelve -1, y
se pone en
errno un valor apropiado.
ERRORES¶
- EINVAL
- nivel es mayor que 3.
- EPERM
- El usuario no es el súper-usuario.
iopl es específico de Linux y no debería emplearse en
programas pretendidamente transportables.
OBSERVACIONES¶
Libc5 la trata como una llamada al sistema y posee un prototipo en
<unistd.h>. Glibc1 no tiene un prototipo. Glibc2 posee un
prototipo tanto en
<sys/io.h> como en
<sys/perm.h>.
Evite el último, sólo está disponible en la arquitectura
i386.
VÉASE TAMBIÉN¶
ioperm(2)