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
|