MODIFY_LDT(2)

이름
modify_ldt - ldt를 가져오거나 설정한다.

사용법
#include <linux/ldt.h>
#include <linux/unistd.h>

_syscall3( int, modify_ldt, int, func, void *, ptr, unsigned long, bytecount )

int modify_ldt(int func, void *ptr, unsigned long bytecount);

설명
modify_ldt는 프로세스를 위해 지역 기술자 테이블(local descriptor table, ldt)을 읽거나 쓴다. ldt는 i386 프로세스에 의해 사용되는 프로세스당 메모리 관리 테이블이다. 이 테이블에 관한 더 많은 정보를 원한다면, Intel 386 프로세스 핸드북을 참조해라.

func가 0이라면, modify_ldt는 ptr가 가리키는 메모리로 ldt를 읽어들인다. 읽을 바이트 수는 bytecount보다 작으며 ldt의 실제 크기를 나타낸다.

func가 1이라면, modify_ldt는 하나의 ldt 엔트리를 수정한다. ptr는 modify_ldt_ldt_s 구조체를 가리키며 bytecount는 이 구조체의 크기와 같아야 한다.

반환값
성공시, modify_ldt는 읽은(읽기 시에) 바이트의 실제 수나 0(쓰기 시에)을 반환한다. 실패시, modify_ldt는 -1을 반환하며 errno는 적당한 값으로 설정된다.

에러

ENOSYS
    func가 0도 1도 아니다.

EINVAL
    ptr이 0이거나, func가 1이고 bytecount가 modify_ldt_ldt_s구조체의 크기와 같지 않을 경우나, func가 1이고 새로운 ldt 엔트리가 허용되지 않는 값이다.

EFAULT
    ptr이 주소 공간이 아닌 곳을 가리키고 있다.

호환
이 함수는 리눅스에 의존적이며 호환성을 염두에 둔 프로그램에서 사용해서는 안된다.

관련 항목
vm86(2)

역자
정강훈 <skyeyes@soback.kornet.net>, 2000년 5월 28일