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] Event Channels

To: Julian Stecklina <der_julian@xxxxxx>
Subject: Re: [Xen-devel] Event Channels
From: Brendan Cully <brendan@xxxxxxxxx>
Date: Fri, 12 Jan 2007 11:29:23 -0800
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 12 Jan 2007 11:28:58 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <eo8k9g$l7i$1@xxxxxxxxxxxxx>
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>
Mail-followup-to: der_julian@xxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxx
References: <eo8k9g$l7i$1@xxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.5.13 (2006-11-21)
On Friday, 12 January 2007 at 19:33, Julian Stecklina wrote:
> Hello,
> 
> in an application I develop, event channel semantics seem a bit odd to 
> me. Consider the following scenario: A Mini-OS binds an unbound port for
> domain 0 and issues a notification every second:
> 
>       evtchn_alloc_unbound(0, msg_handler, NULL,
>                            &port);
> 
>       printk("%u %u %u\n", domid, port);
> 
>       while (1) {
>               sleep(1000);
>               notify_remote_via_evtchn(port);
>       }
> 
> A Linux program running on Domain 0 calls bind_interdomain using domid
> and port to obtain local_port and watches for pending notifications:
> 
>       evtchn_port_t local_port = xc_evtchn_bind_interdomain(ev, domid, 
>       port);
> 
>       while (1) {
>               evtchn_port_t port;
> 
>               port = xc_evtchn_pending(ev);
>               printf("%u\n", port);
>               xc_evtchn_unmask(ev, port);
>       }
> 
> Now what I do not understand is, why the Linux program sees exactly one
> notification and then indefinitely blocks. Any help on what I may be 
> doing wrong is greatly appreciated. This is with xen-3.0.4-testing.

According to the interface guide

http://www.cl.cam.ac.uk/research/srg/netos/xen/readmes/interface/interface.html#SECTION00600000000000000000

the event is masked until the receiver clears the notification. I
think you do this by sending a notify back along the same port:

while (1) {
        evtchn_port_t port;
 
        port = xc_evtchn_pending(ev);
        printf("%u\n", port);
        xc_evtchn_notify(ev, port);
        xc_evtchn_unmask(ev, port);
}

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

<Prev in Thread] Current Thread [Next in Thread>