I386_GET_LDT(2)

명칭
i386_get_ldt, i386_set_ldt - i386 프로세스마다의 로컬 기술자 테이블 엔트리를 관리한다

프로그램 라이브러리
libc

서식
<machine/segments.h> <machine/sysarch.h> int i386_get_ldt(int start_sel, union descriptor *descs, int num_sels) int i386_set_ldt(int start_sel, union descriptor *descs, int num_sels)

해설
i386_get_ldt() (은)는 프로세스의 LDT 안에 있는 i386 기술자의 리스트를 돌려줍니다. i386_set_ldt() (은)는 현재의 프로세스를 위한 i386 기술자의 리스트를, 그 프로세스의 LDT 로 설정합니다. 양쪽 모두의 routine는, 개시하는 실렉터 번호의 start_sel 라고 설정하는 기술아이가 들어온, 또는 기술자가 돌려주어지는 메모리의 배열의 descs 및 설정 또는 돌려주어지는 엔트리수의 num_sels (을)를 받습니다.

인수 descs (으)로서는 segment_descriptor 또는 gate_descriptor <i386/segments.h>. <i386/segments.h> 안에 정의되고 있습니다. 이러한 원가요소는, 아키텍쳐에 대응해 뿔뿔이 흩어지게 된 비트 필드로서 정의 되고 있으므로, 그것들을 조립하려면 주위를 기울일 필요가 있습니다.

이러한 함수를 사용하려면 , 커널의 설정 파일중에서 “options USER_LDT” (을)를 지정하고 있지 않으면 안 되는 것에 주의해 주세요.

반환값
정상적으로 완료했을 경우, i386_get_ldt() (은)는 현재 LDT 내에 있는 기술자의 수를 돌려줍니다. i386_set_ldt() (은)는 최초의 실렉터 세트를 돌려줍니다. 그렇지 않은 경우는 -1 이 돌려주어 에러를 나타내기 위해서(때문에) 글로벌 변수 errno 하지만 설정됩니다.

에러
i386_get_ldt() (와)과 i386_set_ldt() (은)는 다음의 경우에 실패합니다.

[EINVAL]
    start_sel 또는 num_sels 에 붙어 부적절한 파라미터가 사용되었습니다.

[EACCES]
    호출측이 보호 기구를 속이든가 또는 장해를 일으키는 기술자를 사용하려고 했습니다.

관련 항목
i386 Microprocessor Programmer's Reference Manual, Intel

경고
이것을 사용해 프로세스를 완전히 안되게 할 수가 있습니다.