qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Glauber Costa <glommer@redhat.com>
To: qemu-devel@nongnu.org
Cc: aliguori@us.ibm.com
Subject: [Qemu-devel] [PATCH 2/7] store thread-specific env information
Date: Thu, 26 Nov 2009 15:24:55 -0200	[thread overview]
Message-ID: <1259256300-23937-3-git-send-email-glommer@redhat.com> (raw)
In-Reply-To: <1259256300-23937-2-git-send-email-glommer@redhat.com>

Since we'll have multiple cpu threads, at least for kvm, we need a way to store
and retrieve the CPUState associated with the current execution thread.
For the I/O thread, this will be NULL.

I am using pthread functions for that, for portability, but we could as well
use __thread keyword.

Signed-off-by: Glauber Costa <glommer@redhat.com>
---
 vl.c |   21 +++++++++++++++++++++
 1 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/vl.c b/vl.c
index ee43808..9afe4b6 100644
--- a/vl.c
+++ b/vl.c
@@ -3436,6 +3436,24 @@ static void block_io_signals(void);
 static void unblock_io_signals(void);
 static int tcg_has_work(void);
 
+static pthread_key_t current_env;
+
+CPUState *qemu_get_current_env(void);
+CPUState *qemu_get_current_env(void)
+{
+    return pthread_getspecific(current_env);
+}
+
+static void qemu_set_current_env(CPUState *env)
+{
+    pthread_setspecific(current_env, env);
+}
+
+static void qemu_init_current_env(void)
+{
+    pthread_key_create(&current_env, NULL);
+}
+
 static int qemu_init_main_loop(void)
 {
     int ret;
@@ -3448,6 +3466,7 @@ static int qemu_init_main_loop(void)
     qemu_mutex_init(&qemu_fair_mutex);
     qemu_mutex_init(&qemu_global_mutex);
     qemu_mutex_lock(&qemu_global_mutex);
+    qemu_init_current_env();
 
     unblock_io_signals();
     qemu_thread_self(&io_thread);
@@ -3486,6 +3505,8 @@ static void *kvm_cpu_thread_fn(void *arg)
 
     block_io_signals();
     qemu_thread_self(env->thread);
+    qemu_set_current_env(env);
+
     if (kvm_enabled())
         kvm_init_vcpu(env);
 
-- 
1.6.5.2

  reply	other threads:[~2009-11-26 17:25 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-26 17:24 [Qemu-devel] [PATCH 0/7] KVM SMP support, early version Glauber Costa
2009-11-26 17:24 ` [Qemu-devel] [PATCH 1/7] Don't mess with halted state Glauber Costa
2009-11-26 17:24   ` Glauber Costa [this message]
2009-11-26 17:24     ` [Qemu-devel] [PATCH 3/7] update halted state on mp_state sync Glauber Costa
2009-11-26 17:24       ` [Qemu-devel] [PATCH 4/7] qemu_flush_work for remote vcpu execution Glauber Costa
2009-11-26 17:24         ` [Qemu-devel] [PATCH 5/7] tell kernel about all registers instead of just mp_state Glauber Costa
2009-11-26 17:24           ` [Qemu-devel] [PATCH 6/7] Don't call kvm cpu reset on initialization Glauber Costa
2009-11-26 17:25             ` [Qemu-devel] [PATCH 7/7] remove smp restriction from kvm Glauber Costa
2009-11-29 15:32           ` [Qemu-devel] [PATCH 5/7] tell kernel about all registers instead of just mp_state Avi Kivity
2009-11-30 11:45             ` Glauber Costa
2009-11-30 12:04               ` Gleb Natapov
2009-11-30 12:05               ` Avi Kivity
2009-11-30 13:31                 ` Glauber Costa
2009-11-30 13:32                   ` Avi Kivity
2009-11-29 15:32         ` [Qemu-devel] [PATCH 4/7] qemu_flush_work for remote vcpu execution Avi Kivity
2009-11-30 11:44           ` Glauber Costa
2009-11-30 12:06             ` Avi Kivity
2009-11-30 11:48         ` [Qemu-devel] " Paolo Bonzini
2009-11-29 15:29     ` [Qemu-devel] [PATCH 2/7] store thread-specific env information Avi Kivity
2009-11-29 15:38       ` Andreas Färber
2009-11-29 15:42         ` Avi Kivity
2009-11-29 16:00           ` Andreas Färber
2009-11-29 22:29           ` Jamie Lokier
2009-11-30 11:36         ` [Qemu-devel] " Paolo Bonzini
2009-11-30 11:41           ` Glauber Costa
2009-11-30 11:49             ` Paolo Bonzini
2009-11-30 12:07               ` Avi Kivity
2009-11-29 17:32 ` [Qemu-devel] Re: [PATCH 0/7] KVM SMP support, early version Jan Kiszka
2009-11-30 11:42   ` Glauber Costa
2009-11-30 15:55     ` Glauber Costa
2009-11-30 16:40       ` Avi Kivity
2009-11-30 16:47         ` Glauber Costa
2009-11-30 17:30           ` Jan Kiszka
2009-12-01 12:10             ` Avi Kivity
2009-12-01 12:17               ` Jan Kiszka
2009-12-01 12:20                 ` Glauber Costa
2009-12-01 12:33                   ` Jan Kiszka
2009-11-30 16:50         ` Avi Kivity
2009-12-01  0:31 ` [Qemu-devel] " Ed Swierk
2009-12-01  0:42   ` Ed Swierk
2009-12-01 12:20 ` Alexander Graf

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=1259256300-23937-3-git-send-email-glommer@redhat.com \
    --to=glommer@redhat.com \
    --cc=aliguori@us.ibm.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).