| Viewing file:  nmi.h (1.38 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
#ifndef _ASM_X86_NMI_H#define _ASM_X86_NMI_H
 
 #include <linux/irq_work.h>
 #include <linux/pm.h>
 #include <asm/irq.h>
 #include <asm/io.h>
 
 #ifdef CONFIG_X86_LOCAL_APIC
 
 extern int avail_to_resrv_perfctr_nmi_bit(unsigned int);
 extern int reserve_perfctr_nmi(unsigned int);
 extern void release_perfctr_nmi(unsigned int);
 extern int reserve_evntsel_nmi(unsigned int);
 extern void release_evntsel_nmi(unsigned int);
 
 struct ctl_table;
 extern int proc_nmi_enabled(struct ctl_table *, int ,
 void __user *, size_t *, loff_t *);
 extern int unknown_nmi_panic;
 
 #endif /* CONFIG_X86_LOCAL_APIC */
 
 #define NMI_FLAG_FIRST    1
 
 enum {
 NMI_LOCAL=0,
 NMI_UNKNOWN,
 NMI_SERR,
 NMI_IO_CHECK,
 NMI_MAX
 };
 
 #define NMI_DONE    0
 #define NMI_HANDLED    1
 
 typedef int (*nmi_handler_t)(unsigned int, struct pt_regs *);
 
 struct nmiaction {
 struct list_head    list;
 nmi_handler_t        handler;
 u64            max_duration;
 struct irq_work        irq_work;
 unsigned long        flags;
 const char        *name;
 };
 
 #define register_nmi_handler(t, fn, fg, n, init...)    \
 ({                            \
 static struct nmiaction init fn##_na = {    \
 .handler = (fn),            \
 .name = (n),                \
 .flags = (fg),                \
 };                        \
 __register_nmi_handler((t), &fn##_na);        \
 })
 
 int __register_nmi_handler(unsigned int, struct nmiaction *);
 
 void unregister_nmi_handler(unsigned int, const char *);
 
 void stop_nmi(void);
 void restart_nmi(void);
 void local_touch_nmi(void);
 
 #endif /* _ASM_X86_NMI_H */
 
 |