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 <yuzg@xxxxxxxxxxxxxx>
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,
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|