qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paul Brook <paul@codesourcery.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH]ish NPTL support.
Date: Sat, 16 Dec 2006 15:17:14 +0000	[thread overview]
Message-ID: <200612161517.16022.paul@codesourcery.com> (raw)
In-Reply-To: <1166275574.5253.1196.camel@pmac.infradead.org>

> > On the other hand, using the host's makes it hard to run Linux guest
> > binaries on non-Linux hosts (those which don't have futex), or newer
> > Linux guest binaries on older Linux hosts which have fewer futex ops,
> > or none at all.
>
> I don't think we care. You can't run qemu-i386 on a non-Linux box
> _anyway_, can you? And having some syscalls return -ENOSYS if you run on
> a prehistoric kernel is perfectly normal.

Not out the box, not. However It's not all that hard to make it work. 
Certainly on any sane unix host It should be feasible. Most of the syscalls we 
currently translate in C library calls or implement ourselves, we don't use 
host syscalls directly. I've even had a fair amount of success successfully 
run linux applications on windows hosts via qemu.

> I did briefly think about implementing threading entirely within qemu
> _without_ using threads on the host -- having the qemu process itself
> schedule between the different CPU contexts. That would make the GDB
> stub a whole lot saner for debugging multi-threaded guest programs. But
> I don't think it's workable -- the whole point in NPTL was that you
> _can't_ emulate proper POSIX-compliant threading with hacks in
> userspace; especially the details of signal delivery.

I'm fairly sure some of the BSDs have multiple userspace threads per kernel 
context. There was at least 1 proposed linux implementation like this as 
well. IIRC we only ended up with the current 1:1 mapping because it was 
simpler.

One possibility is to use host threads (to get PID/TID mappings right), but 
still explicitly schedule from userspace. ie. have qemu ensure no more than 
one thread is active at any time.

Paul

  reply	other threads:[~2006-12-16 15:17 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-09 22:38 [Qemu-devel] [PATCH]ish NPTL support David Woodhouse
2006-12-13 16:02 ` Mulyadi Santosa
2006-12-13 17:01   ` David Woodhouse
2006-12-13 17:22     ` Paul Brook
2006-12-13 17:32       ` David Woodhouse
2006-12-13 17:42         ` Paul Brook
2006-12-13 17:50           ` David Woodhouse
2006-12-13 18:07             ` Paul Brook
2006-12-13 18:44               ` Fabrice Bellard
2006-12-14  2:16             ` Jamie Lokier
2006-12-16 13:26               ` David Woodhouse
2006-12-16 15:17                 ` Paul Brook [this message]
2006-12-16 18:48                 ` Jamie Lokier
2006-12-13 17:35     ` Thiemo Seufer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200612161517.16022.paul@codesourcery.com \
    --to=paul@codesourcery.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).