5.4. trap_init()

트랩은 인터럽트와는 달리 정해진 곳으로 분기하도록 되어 있고 번호로 정해져 있다. 아래는 i386에서 정해져 있는 트랩의 일부를 열거한 것이다.

trap_init()에선 시스템 콜을 위한 초기화도 실행해 0x80을 시스템 콜에 사용하도록 해놓는다.

그리고 CPU를 초기화 한다. CPU 초기화에선 페이지, gdt, ldt, idt, tss 등이 설정되고 이를 사용할 수 있는 상태로 만들어 본격적인 커널 실행에 들어간다. /var/log/dmesg의 (6)에 출력된 한 줄이 CPU의 초기화를 의미한다.

i386에서 trap을 초기화하는 함수인 _set_gate()는 C.2.2절를 참조 하기 바란다.

ARM 프로세서의 trap은 arch/arm/kernel/entry-armv.S나 arch/arm/kernel/entry-armo.S에 정의되어 있고 내용은 다음과 같다. 앞의 값은 vector의 offset을 말한다.