WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] problem using xenbus interface

To: NAHieu <nahieu@xxxxxxxxx>
Subject: Re: [Xen-devel] problem using xenbus interface
From: Rusty Russell <rusty@xxxxxxxxxxxxxxx>
Date: Tue, 09 Aug 2005 12:21:55 +1000
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Tue, 09 Aug 2005 02:20:12 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <5d7aca9505080805267dce691b@xxxxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <5d7aca9505080805267dce691b@xxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
On Mon, 2005-08-08 at 21:26 +0900, NAHieu wrote:
> Hello,
> 
> I a writing a small kernel module for domU, in which I use xenbus and
> have some problems:
> 
> I use xenbus_scanf to read value of "/restart_mode", but the below
> code always failed (got non-zero err)
> 
> err = xenbus_scanf("/", "restart_mode", "%s", mode);

OK, if you start the xenstored with "--trace-file=/tmp/trace" you can
see what's happening in that file.

In this case, it's actually a bug in xenbus_scanf: it will ask to read
"//restart_mode" which is an invalid path since it has two "/" in a row.
But it's not a big problem because you shouldn't be writing in the top
level directory anyway...

I would recommend the following:

1) Use xenbus_read here, not xenbus_scanf, since you are just reading a
single string and xenbus_read won't overflow on long strings.

2) Use "restart-mode" not "restart_mode": we've chosen - over _ so far.

3) Use the two args "restart-mode", "": that will be restart-mode inside
your domain's home directory, rather than at the top level.

> Another code like below also failed (I try to make a new node
> "/domain/<DOM>/test" with xenbus_mkdir):
> 
> err = xenbus_mkdir("/", "test");

Same problem: it would be "xenbus_mkdir("/test", "")" and you probably
don't want to do that at the top level anyway (when we turn permission
checking back on, that will not work).

Hope that helps!
Rusty.
(PS.  Heading to the wiki now to do some remedial documentation).
-- 
A bad analogy is like a leaky screwdriver -- Richard Braakman


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel