|
|
|
|
|
|
|
|
|
|
xen-devel
Re: [Xen-devel] Mini-OS context switching
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
|
|
|
|
|