From mboxrd@z Thu Jan 1 00:00:00 1970 From: Yu Zhiguo Subject: Re: xl: Enable 'xl console' in 'x86_64' Date: Thu, 29 Apr 2010 10:38:52 +0800 Message-ID: <4BD8F13C.6050703@cn.fujitsu.com> References: <4BD80DF4.6000804@cn.fujitsu.com> <4BD856F6.4010503@goop.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <4BD856F6.4010503@goop.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Jeremy Fitzhardinge Cc: "xen-devel@lists.xensource.com" , Keir Fraser List-Id: xen-devel@lists.xenproject.org Hi Jeremy Jeremy Fitzhardinge wrote: >> >> + if (uname(&utsbuf) != -1) { >> + if (!strcmp(utsbuf.machine, "x86_64") || !strcmp(utsbuf.machine, "ia64")) >> + XENCONSOLE = "/usr/lib64/xen/bin/xenconsole"; >> + } >> > > Won't this fail if the tools were build 32bit, but being run on a 64bit > machine? Why not just look in both places? Or fix the xenconsole to > install in /usr/lib regardless of architecture (it isn't a library, so > nothing will care about its architecture). Thanks for you reply. I think just look up both location is better. Please refer to the following. ------------- 'xl console' cannot be used on arch 'x86_64', because the path of 'xenconsole' is wrong. Fix this bug. Signed-off-by: Yu Zhiguo diff -r 9a1d7caa2024 -r 49176e864ca7 tools/libxl/libxl.c --- a/tools/libxl/libxl.c Mon Apr 26 12:13:23 2010 +0100 +++ b/tools/libxl/libxl.c Thu Apr 29 18:36:28 2010 +0800 @@ -741,15 +741,19 @@ { struct stat st; const char *XENCONSOLE = "/usr/lib/xen/bin/xenconsole"; + const char *XENCONSOLE64 = "/usr/lib64/xen/bin/xenconsole"; char *cmd; - if (stat(XENCONSOLE, &st) != 0) { - XL_LOG(ctx, XL_LOG_ERROR, "could not access %s", XENCONSOLE); + if (!stat(XENCONSOLE, &st)) { + cmd = libxl_sprintf(ctx, "%s %d --num %d", XENCONSOLE, domid, cons_num); + return (system(cmd) != 0) ? ERROR_FAIL : 0; + } else if (!stat(XENCONSOLE64, &st)) { + cmd = libxl_sprintf(ctx, "%s %d --num %d", XENCONSOLE64, domid, cons_num); + return (system(cmd) != 0) ? ERROR_FAIL : 0; + } else { + XL_LOG(ctx, XL_LOG_ERROR, "could not access %s and %s", XENCONSOLE, XENCONSOLE64); return ERROR_FAIL; } - - cmd = libxl_sprintf(ctx, "%s %d --num %d", XENCONSOLE, domid, cons_num); - return (system(cmd) != 0) ? ERROR_FAIL : 0; } static char ** libxl_build_device_model_args(struct libxl_ctx *ctx,