커널 모듈에 gate_desc *idt_table
을 사용하려고합니다. desc.h에 정의 된 set_trap_gate()
함수는이 포인터를 사용합니다. desc.h에서 또한 정의 : extern gate_desc idt_table[]
입니다. idt_table undefined! 커널 모듈을 컴파일 할 때 경고
이 idt_table
주소 나는 컴파일 또는 불완전한 유형 동안 id_table
정의되지 않은 경고 하나를 얻을 내 (유효)으로 idt_table
에 영향을 미치는 정의 나 허식없이
- 사용
idt_table
내 모듈 : 나는 다른 것을 시도idt_table
입니다. 예를
gate_desc *it = (gate_desc *)@;
의 이름을 딴 새로운 VAR를 만들고 복사set_trap_gate
,set_gate
,write_idt_entry
, 내 모듈 파일로 sched.h에에서pack_gate
기능 (그 이름을 변경하고,idt_table
대신에 그것을 사용). 이 잘 컴파일하지만 내 모듈을 삽입 할 때 모듈 (ret -1) 오류 알 수없는 기호가 나타납니다. (내 모듈에는 idt_table에 대한 참조가 없으며 sched에서 사용하는 함수는 내 변수를 사용합니다.)
나는 sched.h에 의해 포함 된 파일에 idt_table
을 정의 된 곳을보고했는데, 그것을 찾을 수 없습니다!
누군가가 sched.h의 idt_table 포인터 (corrct 주소에 영향을 미침)를 사용하거나 새 포인터를 만들 수 있음을 알고 있습니까?
커널 모듈에서 이러한 종류의 작업을 수행하는 것은 안전하지 않습니다. 어쨌든 하나의 CPU 코어 만의 테이블을 수정하기 때문에 SMP 시스템에서 작동하지 않습니다 (공유 될 필요는 없습니다) . 커널 초기화는 커널 초기화에만 국한되어 있으므로 ('__init'으로 표시되어 있습니다). 성취하려고하는 것이 정확히 무엇입니까? –