*参照元 [#ab908856]
#backlinks

*説明 [#z962709e]
-パス: [[linux-2.6.33/arch/arm/mm/fault.c]]

-FIXME: これは何?
--説明


**引数 [#t3574239]
-struct mm_struct *mm
--
--[[linux-2.6.33/mm_struct]]
-unsigned long addr
--
-unsigned int fsr
--
-struct pt_regs *regs
--
--[[linux-2.6.33/pt_regs]]


**返り値 [#fa1b4895]
-なし


**参考 [#r7e0f279]


*実装 [#s88d8ebd]
 /*
  * Oops.  The kernel tried to access some page that wasn't present.
  */
 static void
 __do_kernel_fault(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
 		  struct pt_regs *regs)
 {
 	/*
 	 * Are we prepared to handle this kernel fault?
 	 */
 	if (fixup_exception(regs))
 		return;
 
-
--[[linux-2.6.33/fixup_exception()]]

 	/*
 	 * No handler, we'll have to terminate things with extreme prejudice.
 	 */
 	bust_spinlocks(1);
-
--[[linux-2.6.33/bust_spinlocks()]]

 	printk(KERN_ALERT
 		"Unable to handle kernel %s at virtual address %08lx\n",
 		(addr < PAGE_SIZE) ? "NULL pointer dereference" :
 		"paging request", addr);
 
-
--[[linux-2.6.33/printk()]]
--[[linux-2.6.33/KERN_ALERT]]
--[[linux-2.6.33/PAGE_SIZE]]

 	show_pte(mm, addr);
-
--[[linux-2.6.33/show_pte()]]

 	die("Oops", regs, fsr);
-
--[[linux-2.6.33/die()]]

 	bust_spinlocks(0);
 	do_exit(SIGKILL);
-
--[[linux-2.6.33/do_exit()]]
--[[linux-2.6.33/SIGKILL]]

 }


*コメント [#yf413670]


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS