summaryrefslogtreecommitdiff
path: root/xen/arch/x86/include/asm/nmi.h
blob: 9a5da14162cc1adff22d6beb6feff311b81fadd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

#ifndef ASM_NMI_H
#define ASM_NMI_H

#include <public/nmi.h>

struct cpu_user_regs;

/* Watchdog boolean from the command line */
extern bool opt_watchdog;

/* Watchdog force parameter from the command line */
extern bool watchdog_force;

/* CPU to handle platform NMI */
extern const unsigned int nmi_cpu;
 
typedef int nmi_callback_t(const struct cpu_user_regs *regs, int cpu);
 
/** 
 * set_nmi_callback
 *
 * Set a handler for an NMI. Only one handler may be
 * set. Return the old nmi callback handler.
 */
nmi_callback_t *set_nmi_callback(nmi_callback_t *callback);
 
/** 
 * unset_nmi_callback
 *
 * Remove the handler previously set.
 */
void unset_nmi_callback(void);

DECLARE_PER_CPU(unsigned int, nmi_count);

/**
 * trigger_nmi_continuation
 *
 * Schedule continuation to be started in interrupt context after NMI handling.
 */
void trigger_nmi_continuation(void);

/* Check for NMI continuation pending. */
bool nmi_check_continuation(void);
#endif /* ASM_NMI_H */