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] Mini-OS context switching

To: Julian Stecklina <julian@xxxxxxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: Re: [Xen-devel] Mini-OS context switching
From: Keir Fraser <Keir.Fraser@xxxxxxxxxxxx>
Date: Mon, 08 Oct 2007 08:38:00 +0100
Delivery-date: Mon, 08 Oct 2007 00:33:37 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <47092ADB.2050301@xxxxxxxxxxxxxx>
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>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcgJfia1ZRzQrHVxEdypAQAWy6hiGQ==
Thread-topic: [Xen-devel] Mini-OS context switching
User-agent: Microsoft-Entourage/11.3.6.070618
On 7/10/07 19:52, "Julian Stecklina" <julian@xxxxxxxxxxxxxx> wrote:

> Keir Fraser wrote:
>> How is it more difficult than context-switching inside the timer interrupt?
>> In both cases you switch pt_regs and re-enable interrupts. Certainly I don't
>> think the more complicated way of enabling interrupts makes
>> context-switching in minios that much more complicated overall.
> 
> Ok, I see that the problem regarding the race condition between
> re-enabling interrupts and restoring registers is already solved in
> x86_32.S. The remaining problem is that as far as I read the instruction
> set manual correctly IRET will not perform a stack switch, if it returns
> to the same privilege level. But this is exactly what I am trying to
> accomplish. Any clues, how to do this?

You want to switch to a different kernel stack (i.e., you have a kernel
stack per thread)? Or are you running the threads in ring 1 and not using
ring 3 at all? Well, either way, you just want to load your new stack
pointer with a MOV instruction to ESP.

If you are wanting to load a new user stack pointer for running in ring 3,
then you rely on IRET (which you can do because there will be a privilege
transition).

 -- Keir




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

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