debug: log libxc output to /var/log/xen/libxc.log sledge hammer patch ;) --- tools/libxc/xc_dom_compat_linux.c | 2 ++ tools/libxc/xc_hvm_build.c | 2 ++ tools/libxc/xc_linux_build.c | 2 ++ tools/libxc/xc_private.c | 9 +++++++++ tools/libxc/xc_private.h | 11 +++++++---- 5 files changed, 22 insertions(+), 4 deletions(-) Index: build-64-release304-13087/tools/libxc/xc_hvm_build.c =================================================================== --- build-64-release304-13087.orig/tools/libxc/xc_hvm_build.c +++ build-64-release304-13087/tools/libxc/xc_hvm_build.c @@ -310,6 +310,8 @@ static int xc_hvm_build_internal(int xc_ vcpu_guest_context_t ctxt; int rc; + log_kraxel(); + if ( (image == NULL) || (image_size == 0) ) { ERROR("Image required"); Index: build-64-release304-13087/tools/libxc/xc_linux_build.c =================================================================== --- build-64-release304-13087.orig/tools/libxc/xc_linux_build.c +++ build-64-release304-13087/tools/libxc/xc_linux_build.c @@ -1099,6 +1099,8 @@ static int xc_linux_build_internal(int x unsigned long vstartinfo_start, vkern_entry, vstack_start; uint32_t features_bitmap[XENFEAT_NR_SUBMAPS] = { 0, }; + log_kraxel(); + if ( features != NULL ) { if ( !parse_features(features, features_bitmap, NULL) ) Index: build-64-release304-13087/tools/libxc/xc_private.c =================================================================== --- build-64-release304-13087.orig/tools/libxc/xc_private.c +++ build-64-release304-13087/tools/libxc/xc_private.c @@ -88,6 +88,15 @@ void xc_set_error(int code, const char * error_handler(&last_error); } +FILE *kraxel; + +void log_kraxel(void) +{ + kraxel = fopen("/var/log/xen/libxc.log", "a"); + setvbuf(kraxel, NULL, _IONBF, 0); + fprintf(kraxel, "--- started ---\n"); +} + int lock_pages(void *addr, size_t len) { int e = 0; Index: build-64-release304-13087/tools/libxc/xc_private.h =================================================================== --- build-64-release304-13087.orig/tools/libxc/xc_private.h +++ build-64-release304-13087/tools/libxc/xc_private.h @@ -39,22 +39,25 @@ #define DEBUG 1 #define INFO 1 -#define PROGRESS 0 +#define PROGRESS 1 + +extern FILE *kraxel; +void log_kraxel(void); #if INFO -#define IPRINTF(_f, _a...) printf(_f , ## _a) +#define IPRINTF(_f, _a...) fprintf(kraxel, _f , ## _a) #else #define IPRINTF(_f, _a...) ((void)0) #endif #if DEBUG -#define DPRINTF(_f, _a...) fprintf(stderr, _f , ## _a) +#define DPRINTF(_f, _a...) fprintf(kraxel, _f , ## _a) #else #define DPRINTF(_f, _a...) ((void)0) #endif #if PROGRESS -#define PPRINTF(_f, _a...) fprintf(stderr, _f , ## _a) +#define PPRINTF(_f, _a...) fprintf(kraxel, _f , ## _a) #else #define PPRINTF(_f, _a...) #endif Index: build-64-release304-13087/tools/libxc/xc_dom_compat_linux.c =================================================================== --- build-64-release304-13087.orig/tools/libxc/xc_dom_compat_linux.c +++ build-64-release304-13087/tools/libxc/xc_dom_compat_linux.c @@ -74,6 +74,7 @@ int xc_linux_build_mem(int xc_handle, ui int rc; xc_dom_loginit(); + log_kraxel(); dom = xc_dom_allocate(cmdline, features); if (0 != (rc = xc_dom_kernel_mem(dom, image_buffer, image_size))) goto out; @@ -106,6 +107,7 @@ int xc_linux_build(int xc_handle, uint32 int rc; xc_dom_loginit(); + log_kraxel(); dom = xc_dom_allocate(cmdline, features); if (0 != (rc = xc_dom_kernel_file(dom, image_name))) goto out;