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/
Home Products Support Community News


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

the intuitive

   while (!buffer_space_available())

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))

freezes xen solid.

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


Xen-devel mailing list

Xen-devel mailing list