at v2.6.20 59 lines 1.2 kB view raw
1#ifndef _S390_KDEBUG_H 2#define _S390_KDEBUG_H 3 4/* 5 * Feb 2006 Ported to s390 <grundym@us.ibm.com> 6 */ 7#include <linux/notifier.h> 8 9struct pt_regs; 10 11struct die_args { 12 struct pt_regs *regs; 13 const char *str; 14 long err; 15 int trapnr; 16 int signr; 17}; 18 19/* Note - you should never unregister because that can race with NMIs. 20 * If you really want to do it first unregister - then synchronize_sched 21 * - then free. 22 */ 23extern int register_die_notifier(struct notifier_block *); 24extern int unregister_die_notifier(struct notifier_block *); 25extern int register_page_fault_notifier(struct notifier_block *); 26extern int unregister_page_fault_notifier(struct notifier_block *); 27extern struct atomic_notifier_head s390die_chain; 28 29 30enum die_val { 31 DIE_OOPS = 1, 32 DIE_BPT, 33 DIE_SSTEP, 34 DIE_PANIC, 35 DIE_NMI, 36 DIE_DIE, 37 DIE_NMIWATCHDOG, 38 DIE_KERNELDEBUG, 39 DIE_TRAP, 40 DIE_GPF, 41 DIE_CALL, 42 DIE_NMI_IPI, 43 DIE_PAGE_FAULT, 44}; 45 46static inline int notify_die(enum die_val val, const char *str, 47 struct pt_regs *regs, long err, int trap, int sig) 48{ 49 struct die_args args = { 50 .regs = regs, 51 .str = str, 52 .err = err, 53 .trapnr = trap, 54 .signr = sig 55 }; 56 return atomic_notifier_call_chain(&s390die_chain, val, &args); 57} 58 59#endif