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] suspending execution within Xen

To: Avi Kivity <avi.kivity@xxxxxxxxxxxx>
Subject: Re: [Xen-devel] suspending execution within Xen
From: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
Date: Wed, 29 Jun 2005 13:42:39 +0100
Cc: xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>
Delivery-date: Wed, 29 Jun 2005 12:37:29 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <1120045998.12491.10.camel@xxxxxxx>
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: <1120045998.12491.10.camel@xxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Xen on x86 doesn't support stack-based continuations within the 
hypervisor -- that is, there is no way to deschedule the current domain 
within Xen and then automatically return to your current point of 
execution when you are re-scheduled.
If you have further work to do, before returning to guest context, when 
the domain is rescheduled then you need to install your own hook 
function into vcpu->arch.schedule_tail. You'll need to xmalloc any 
space you need for continuation data.
 -- Keir

On 29 Jun 2005, at 12:53, Avi Kivity wrote:

I am trying to send a stream of events about one domain to another. so I
set up a ring between the monitoring domain and xen (not the monitored
domain). however I am having trouble blocking when buffer space runs
out.

the intuitive

   while (!buffer_space_available())
       do_block();

does not work; do_block() appears to return to guest context, not to the
while loop (is this correct?). the other alternative,

    while (!buffer_space_available())
        if (!test_and_set_bit(EDF_BLOCKED, &ed->ed_flags))
            domain_sleep(ed);

freezes xen solid.

is there a way to do it? am I missing something obvious?

Avi


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

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