我試圖在內核模塊中使用gate_desc *idt_table
。 desc.h中定義的set_trap_gate()
函數使用此指針。在desc.h中也是一個定義:extern gate_desc idt_table[]
。idt_table undefined!編譯內核模塊時出現警告
我嘗試不同的東西:
- 使用
idt_table
我的模塊中沒有定義或做作 影響
idt_table
我的(有效)idt_table
地址 我得到編譯或不完全類型時成爲一個id_table
未定義警告爲idt_table
。創建一個名爲例如
gate_desc *it = (gate_desc *)@;
新變種,並複製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地址)或創建一個新的指針嗎?
從內核模塊執行這種操作並不安全,無論如何不會在SMP系統上工作,因爲您只需修改一個CPU內核的表(並且不一定保證共享) 。使用它僅限於內核初始化(這就是爲什麼它被標記爲'__init')。你究竟想要達到什麼目的? – 2011-03-15 11:38:37