[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [OPTIONAL][PATCH for-4.5 v5 16/16] Add xen-hvm-send-trigger
A tool to send a trigger to a domU via xc_domain_send_trigger Signed-off-by: Don Slutz <dslutz@xxxxxxxxxxx> --- .gitignore | 1 + tools/misc/Makefile | 7 ++- tools/misc/xen-hvm-send-trigger.c | 103 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+), 2 deletions(-) create mode 100644 tools/misc/xen-hvm-send-trigger.c diff --git a/.gitignore b/.gitignore index 606c703..d66c5f5 100644 --- a/.gitignore +++ b/.gitignore @@ -183,6 +183,7 @@ tools/misc/xen-hvmctx tools/misc/xen-hvm-param tools/misc/xen-vmware-guestinfo tools/misc/xen-list-vmware-guestinfo +tools/misc/xen-hvm-send-trigger tools/misc/gtraceview tools/misc/gtracestat tools/misc/xenlockprof diff --git a/tools/misc/Makefile b/tools/misc/Makefile index 3e7d216..9c5e988 100644 --- a/tools/misc/Makefile +++ b/tools/misc/Makefile @@ -10,7 +10,7 @@ CFLAGS += $(CFLAGS_libxenstore) HDRS = $(wildcard *.h) TARGETS-y := xenperf xenpm xen-tmem-list-parse gtraceview gtracestat xenlockprof xenwatchdogd xencov -TARGETS-$(CONFIG_X86) += xen-detect xen-hvmctx xen-hvm-param xen-vmware-guestinfo xen-list-vmware-guestinfo xen-hvmcrash xen-lowmemd xen-mfndump +TARGETS-$(CONFIG_X86) += xen-detect xen-hvmctx xen-hvm-param xen-vmware-guestinfo xen-list-vmware-guestinfo xen-hvm-send-trigger xen-hvmcrash xen-lowmemd xen-mfndump TARGETS-$(CONFIG_MIGRATE) += xen-hptool TARGETS := $(TARGETS-y) @@ -22,7 +22,7 @@ INSTALL_BIN := $(INSTALL_BIN-y) INSTALL_SBIN-y := xen-bugtool xen-python-path xenperf xenpm xen-tmem-list-parse gtraceview \ gtracestat xenlockprof xenwatchdogd xen-ringwatch xencov -INSTALL_SBIN-$(CONFIG_X86) += xen-hvmctx xen-hvm-param xen-vmware-guestinfo xen-list-vmware-guestinfo xen-hvmcrash xen-lowmemd xen-mfndump +INSTALL_SBIN-$(CONFIG_X86) += xen-hvmctx xen-hvm-param xen-vmware-guestinfo xen-list-vmware-guestinfo xen-hvm-send-trigger xen-hvmcrash xen-lowmemd xen-mfndump INSTALL_SBIN-$(CONFIG_MIGRATE) += xen-hptool INSTALL_SBIN := $(INSTALL_SBIN-y) @@ -66,6 +66,9 @@ xen-vmware-guestinfo: xen-vmware-guestinfo.o xen-list-vmware-guestinfo: xen-list-vmware-guestinfo.o $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS) +xen-hvm-send-trigger: xen-hvm-send-trigger.o + $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS) + xen-hvmcrash: xen-hvmcrash.o $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS_libxenctrl) $(APPEND_LDFLAGS) diff --git a/tools/misc/xen-hvm-send-trigger.c b/tools/misc/xen-hvm-send-trigger.c new file mode 100644 index 0000000..b822f9c --- /dev/null +++ b/tools/misc/xen-hvm-send-trigger.c @@ -0,0 +1,103 @@ +/* + * tools/misc/xen-hvm-send-trigger.c + * + * Copyright (C) 2014 Verizon Corporation + * + * This file is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License Version 2 (GPLv2) + * as published by the Free Software Foundation. + * + * This file is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. <http://www.gnu.org/licenses/>. + */ + +#include <stdio.h> +#include <stdlib.h> +#include <err.h> + +#include <xenctrl.h> +#include <xen/domctl.h> + +#define HVM_NR_SENDTRIGGERS 8 + +int +main(int argc, char **argv) +{ + xc_interface *xch; + int domid; + int sendtrigger; + uint32_t vcpuid = 0; + int ret = 0; + int i; + char hvm_sendtrigger_name[HVM_NR_SENDTRIGGERS][80]; + + if ( (argc < 3) || (argc > 4) ) + errx(1, "usage: %s domid trigger [vcpuid]", argv[0]); + + for ( i = 0; i < HVM_NR_SENDTRIGGERS; i++ ) + snprintf(hvm_sendtrigger_name[i], sizeof(hvm_sendtrigger_name[i]), "Unknown %d", + i); + + snprintf(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_NMI], + sizeof(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_NMI]), + "Trigger_Nmi"); + snprintf(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_RESET], + sizeof(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_RESET]), + "Trigger_Reset"); + snprintf(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_INIT], + sizeof(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_INIT]), + "Trigger_Init"); + snprintf(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_POWER], + sizeof(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_POWER]), + "Trigger_Power"); + snprintf(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_SLEEP], + sizeof(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_SLEEP]), + "Trigger_Sleep"); + snprintf(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_VTPOWER], + sizeof(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_VTPOWER]), + "Trigger_VTPower"); + snprintf(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_VTREBOOT], + sizeof(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_VTREBOOT]), + "Trigger_VTReboot"); + snprintf(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_VTPING], + sizeof(hvm_sendtrigger_name[XEN_DOMCTL_SENDTRIGGER_VTPING]), + "Trigger_VTPing"); + + + xch = xc_interface_open(0, 0, 0); + if ( !xch ) + err(1, "failed to open control interface"); + + domid = atoi(argv[1]); + sendtrigger = strtol(argv[2], NULL, 0); + if ( argc > 3 ) + vcpuid = strtol(argv[3], NULL, 0); + + if ( sendtrigger >= 0 && sendtrigger < HVM_NR_SENDTRIGGERS ) + printf("Sending trigger(%s)=%d to domid %d vcpuid %u\n", + hvm_sendtrigger_name[sendtrigger], sendtrigger, + domid, vcpuid); + else + printf("Sending trigger %d to domid %d vcpuid %u\n", + sendtrigger, domid, vcpuid); + + ret = xc_domain_send_trigger(xch, domid, sendtrigger, vcpuid); + if ( ret ) + err(1, "failed to send sendtrigger %d for domid %d", sendtrigger, + domid); + + xc_interface_close(xch); + + return ret; +} + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ -- 1.8.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |