1
는이 같은 신호 처리기를 추가 한설정 세그먼트 오류 핸들러
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);
}
을 어떻게 할 수 이 신호 처리기가 사용자 영역에서 세그멘테이션 오류를 처리하도록 만드시겠습니까?
static struct sigaction segv_action
다음 설정 :
segv_action.sa_handler = SIG_WPG;
이것
//callback prototype
void Handler(int sig);
//register the callback for the specific signal
signal(SIGSEGV,&Handler);
예를 들려 줄 수 있습니까? 나는 신호 (SIG_WPG)로 시도했다; 어떤 캐스팅없이 포인터에서 정수 만들기에 대한 오류가 발생합니다. – JacobOJ
@JacobOJ 내가 제안한 것을 시도 했습니까? Btw, signal은 응용 프로그램에 신호를 보내지 않도록 콜백을 등록하는 데 사용됩니다. –
사용법을 잘 모르겠습니다. 핸들러는 SIG_WPG를 어떻게 사용하는지 알고 있습니까? – JacobOJ