1
在我signal.h中的文件我已經添加了一個信號處理程序是這樣的:集分割故障處理程序
#define SIG_WPG ((__sighandler_t)3)
,然後在signal.c實現這樣的:
if (ka->sa.sa_handler == SIG_WPG) {
unsigned long ul_cr2 = current->tss.cr2;
unsigned long ul_eip = (unsigned long) regs->eip
int ul_cr2_rounded = ul_cr2 & PAGE_MASK;
printk("ul_eip: %d\n", ul_eip);
printk("ul_cr2: %d\n", ul_cr2);
printk("ul_cr2_rounded: %d\n", ul_cr2_rounded);
}
我怎樣才能使這個信號處理程序處理用戶空間中的分段錯誤?
你能舉個例子嗎?我嘗試了信號(SIG_WPG);這給了我一個關於在沒有強制轉換的情況下從指針開始整數的錯 – JacobOJ
@JacobOJ你試過我的建議嗎?順便說一句,信號用於註冊回調,而不是發送信號給應用程序。 –
我不知道如何使用它。處理程序如何知道如何使用SIG_WPG? – JacobOJ