The pseudo code is like this:
At the Dom0 side:
1. xu_port_new(domid,0,0) // create a new port and connect dom0 and
domU(domid)
2. create a new message
ctrl_msg_t cmsg;
cmsg.type = CMSG_SVDIF_FE;
cmsg.id = 1;
cmsg.subtype = 1;
channel_msg.local = scp->local_port;
channel_msg.remote = scp->remote_port;
memcpy(cmsg.msg,&channel_msg,sizeof(channel_msg));
cmsg.length = sizeof(channel_msg);
3. xu_port_write_request() send out the new msg
4. xu_port_notify() send out notification to the DomU, the local port is
retrieved with the following codes:
local_port = 0;
remote_port = 1;
xc_evtchn_bind_interdomain(self->xc_handle,DOMID_SELF,domid,&local_port,
&remote_port);
5. quit.
At the DomU side, we use a simple kernel module, it first register a
receiver with ctrl_if_register_receiver(CMSG_SVDIF_FE, ctrl_if_rx);
In ctrl_if_rx, we just print out the received msg.
That's it. If the Dom0 app runs in a slow manner, everything seems to be
fine. But if the Dom0 app runs very fast, after 2 or 3 rounds, DomU will
suspend.
Can someone help me out? I was stuck for quite long time. :( Thanks in
advance.
Xin
On Mon, 17 Jan 2005, Anthony Liguori wrote:
> ---- Original message ----
> >Date: Mon, 17 Jan 2005 16:57:53 -0500 (EST)
> >From: Xin Zhao <zhaoxin@xxxxxxxxxxxxxx>
> >Subject: [Xen-devel] weird problem in event channel setup
> >To: xen-devel@xxxxxxxxxxxxxxxxxxxxx
> >
> >Hi, folks,
> >
> >I ran into a weird problem when I tried to setup an event channel between
> >dom0 and domU:
>
> Using which ports?
>
> >My code is quite simple: first, a dom0 application create a new channel
> >and bind dom0 and domU with this channel, second, the dom0 send a message
> >over control interface and send a notification via the control channel
> to the domU,
> >then the dom0 application quited.
>
> Where you using the control_msg_t ring queues? If so, what did you base
> your code on?
>
> >At the domU side, I used a kernel module to listen on the message by
> >calling ctrl_if_register_receiver, when a message is available, the kernel
> >module will print out the message.
> >
> >When I run the dom0 app for a couple of times in a fast manner, domU will
> >be suspended. But if I run the dom0 application in a slow way (run, wait
> >for a while, run again), domU works fine.
>
> Maybe the queue is filling up and you're not gracefully handling it.
> Hard to say, would it be possible to post your code somewhere?
>
> Regards,
>
> Anthony Liguori
> email: aliguori@xxxxxxxxxx
>
> >Anybody knows why? Please give me hand. Thanks.
> >
> >-X
> >
> >
> >-------------------------------------------------------
> >The SF.Net email is sponsored by: Beat the post-holiday blues
> >Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
> >It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
> >_______________________________________________
> >Xen-devel mailing list
> >Xen-devel@xxxxxxxxxxxxxxxxxxxxx
> >https://lists.sourceforge.net/lists/listinfo/xen-devel
>
-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel
|