qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] user emulation status?


From: Martin Mohring
Subject: Re: [Qemu-devel] user emulation status?
Date: Tue, 09 Sep 2008 23:19:29 +0200
User-agent: Thunderbird 2.0.0.12 (X11/20071114)

Paul Brook wrote:
AFAIK NPTL only works fine only on ARM ATM.
The guys porting BSD user mode told us that was astonished that syscall
handling in linux does not use common code. Now I am a bit stonished
too. Are things like syscalls and even more nptl not handled in common
code? Or is the non common code just not implemented?
Btw, I was one of the "SUSE guys". I can offer testing qemu user by setting up every single chroot you whish (with every single linux distro you whish, not only static chroots). We can do that with our buildsystem now. Do you have a place for testresults, which help the developers?

The kenrel/userspace interface for NPTL is actually very small. There's a few extra arguments to clone, TLS register handling and synchronization primitives.

The clone arguments are pretty much the same on all architectures. Variations tend to be minor tweaks to do with passing a large number of arguments to a syscall.

Pretty much every architecture has its own mechanism for providing a TLS register. Some have dedicated hardware registers for this purpose, others use a variety of tricks to provide the value. qemu needs to support this before even single threaded NPTL applications will work.
OK, understood. Its using the hardware optimizations provided by the processor isa.
Synchronisation primitives operations come in two halves. futex syscalls which are the same on all targets, and atomic operations which are different for each architecture. To make multithreaded applications work you need to ensure these atomic operations actually appear atomic.
Ok, understood. Another argument was: If multi-threading is provided, qemu user must be thread-safe itself.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]