aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/nmi.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-08-02 13:43:15 +0100
committerKeir Fraser <keir.fraser@citrix.com>2009-08-02 13:43:15 +0100
commit2d986e611fada54d00d3759dad5725d337493719 (patch)
treeca5b9afcd291893d40b713acdbada93432eca186 /xen/arch/x86/nmi.c
parent91baae515e845630309aa8d72bf1cf4a2eaa120c (diff)
downloadxen-2d986e611fada54d00d3759dad5725d337493719.tar.gz
xen-2d986e611fada54d00d3759dad5725d337493719.tar.bz2
xen-2d986e611fada54d00d3759dad5725d337493719.zip
Add a single trigger for all diagnostic keyhandlers
Add a new keyhandler that triggers all the side-effect-free keyhandlers. This lets automated tests (and users) log the full set of keyhandlers without having to be aware of which ones might reboot the host. Signed-off-by: Tim Deegan <Tim.Deegan@citrix.com> Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/arch/x86/nmi.c')
-rw-r--r--xen/arch/x86/nmi.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/xen/arch/x86/nmi.c b/xen/arch/x86/nmi.c
index 704fb8ee98..f1d8ec3093 100644
--- a/xen/arch/x86/nmi.c
+++ b/xen/arch/x86/nmi.c
@@ -453,6 +453,11 @@ static void do_nmi_trigger(unsigned char key)
local_irq_enable();
}
+static struct keyhandler nmi_trigger_keyhandler = {
+ .u.fn = do_nmi_trigger,
+ .desc = "trigger an NMI"
+};
+
static void do_nmi_stats(unsigned char key)
{
int i;
@@ -475,10 +480,16 @@ static void do_nmi_stats(unsigned char key)
printk("dom0 vcpu0: NMI neither pending nor masked\n");
}
+static struct keyhandler nmi_stats_keyhandler = {
+ .diagnostic = 1,
+ .u.fn = do_nmi_stats,
+ .desc = "NMI statistics"
+};
+
static __init int register_nmi_trigger(void)
{
- register_keyhandler('n', do_nmi_trigger, "trigger an NMI");
- register_keyhandler('N', do_nmi_stats, "NMI statistics");
+ register_keyhandler('N', &nmi_trigger_keyhandler);
+ register_keyhandler('n', &nmi_stats_keyhandler);
return 0;
}
__initcall(register_nmi_trigger);