IOPL(2)

이름
iopl - I/O 권한 수준을 바꾼다.

사용법
#include <unistd.h> /* for libc5 */
#include <sys/io.h> /* for glibc */

int iopl(int level);

설명
iopl 는 현재 프로세스의 I/O 권한 수준을 level. 에서 정해진 수준으로 바꾼다. 이 호출은 8514호환 X 서버가 리눅스하에서 작동할 수 있게 할 필요가 있다 이 X 서버가 모든 65536 I/O 포트에 접근 해야 할 필요가 있기 때문에, ioperm 호출은 충분치 않다. 자유롭게 I/O 포트에 접근하는 것을 승인하는 것에 덧붙여, 더 높은 I/O 권한 수준에서 실행하는 것은 프로세스가 인터럽트를 무력화 시킬 수 있게 한다. 이것은 시스템을 파괴할 수도 있으므로 권장하는 바가 아니다. 승인은 fork와 exec에 의해 상속된다. 일반적인 프로세스에 대한 I/O 권한 수준은 0이다.

반환값
성공 시, 0이 반환되고, 에러 시, -1이 반환된다. errno 는 적절히 설정된다.

에러

EINVAL
    level 이 3보다 크다.

EPERM
    현재 사용자는 슈퍼 유저가 아니다.

커널 소스에서의 주의
iopl 는 반드시 0x3ff 범위를 넘어서는 I/O 포트에 접근하고자 할 때 사용한다: 모든 비트맵 방식의 65536 포트를 가지려면, 비트맵/프로세스 8kB가 필요하다.

호환
iopl는 리눅스에 특화 되어 있다. 이식을 목적으로 하는 프로세스에 쓰지 말 것.

주의
Libc5은 이것을 시스템 호출처럼 다룬다. 그리고 <unistd.h>. 에 기본형을 가지고 있다. Glibc1은 기본형을 가지지 않는다. Glibc2 <sys/io.h> 과 <sys/perm.h>. 에 모두 기본형을 가진다. 후자를 제외하곤, I386에서만 가능하다.

관련 항목
ioperm(2)

역자
ASPLINUX<man@asp-linux.co.kr>, 2000년 7월 27일