# HG changeset patch # User Tristan Gingold # Date 1182617932 -7200 # Node ID 675ccf45dc630166ad374023e119a68c48918088 # Parent 8a6a6d4afcb31c24ee87a5d30bebec41e8d38126 Add xc_domain_setdebugging in the xenctrl API. Use it in xc_ptrace.c Signed-off-by: Tristan Gingold diff -r 8a6a6d4afcb3 -r 675ccf45dc63 tools/libxc/xc_domain.c --- a/tools/libxc/xc_domain.c Fri Jun 22 11:48:49 2007 -0600 +++ b/tools/libxc/xc_domain.c Sat Jun 23 18:58:52 2007 +0200 @@ -696,6 +696,18 @@ int xc_get_hvm_param(int handle, domid_t return rc; } +int xc_domain_setdebugging(int xc_handle, + uint32_t domid, + unsigned int enable) +{ + DECLARE_DOMCTL; + + domctl.cmd = XEN_DOMCTL_setdebugging; + domctl.domain = domid; + domctl.u.setdebugging.enable = enable; + return do_domctl(xc_handle, &domctl); +} + /* * Local variables: * mode: C diff -r 8a6a6d4afcb3 -r 675ccf45dc63 tools/libxc/xc_ptrace.c --- a/tools/libxc/xc_ptrace.c Fri Jun 22 11:48:49 2007 -0600 +++ b/tools/libxc/xc_ptrace.c Sat Jun 23 18:58:52 2007 +0200 @@ -566,10 +566,7 @@ xc_ptrace( } if ( request == PTRACE_DETACH ) { - domctl.cmd = XEN_DOMCTL_setdebugging; - domctl.domain = current_domid; - domctl.u.setdebugging.enable = 0; - if ((retval = do_domctl(xc_handle, &domctl))) + if ((retval = xc_domain_setdebugging(xc_handle, current_domid, 0))) goto out_error_domctl; } regs_valid = 0; @@ -593,10 +590,7 @@ xc_ptrace( else if ((retval = xc_domain_pause(xc_handle, current_domid))) goto out_error_domctl; current_is_hvm = !!(domctl.u.getdomaininfo.flags&XEN_DOMINF_hvm_guest); - domctl.cmd = XEN_DOMCTL_setdebugging; - domctl.domain = current_domid; - domctl.u.setdebugging.enable = 1; - if ((retval = do_domctl(xc_handle, &domctl))) + if ((retval = xc_domain_setdebugging(xc_handle, current_domid, 1))) goto out_error_domctl; if (get_online_cpumap(xc_handle, &domctl.u.getdomaininfo, &cpumap)) diff -r 8a6a6d4afcb3 -r 675ccf45dc63 tools/libxc/xenctrl.h --- a/tools/libxc/xenctrl.h Fri Jun 22 11:48:49 2007 -0600 +++ b/tools/libxc/xenctrl.h Sat Jun 23 18:58:52 2007 +0200 @@ -433,6 +433,18 @@ int xc_domain_send_trigger(int xc_handle uint32_t trigger, uint32_t vcpu); +/** + * This function enables or disable debugging of a domain. + * + * @parm xc_handle a handle to an open hypervisor interface + * @parm domid the domain id to send trigger + * @parm enable true to enable debugging + * return 0 on success, -1 on failure + */ +int xc_domain_setdebugging(int xc_handle, + uint32_t domid, + unsigned int enable); + /* * EVENT CHANNEL FUNCTIONS */