В моем файле 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);
}
Как я могузаставить этот обработчик сигналов обрабатывать ошибки сегментации в пространстве пользователя?