From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:60393) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJSfc-0003FL-L0 for qemu-devel@nongnu.org; Thu, 27 Oct 2011 12:19:10 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RJSfX-0004YW-5M for qemu-devel@nongnu.org; Thu, 27 Oct 2011 12:19:08 -0400 Received: from cantor2.suse.de ([195.135.220.15]:39034 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RJSfW-0004XA-MZ for qemu-devel@nongnu.org; Thu, 27 Oct 2011 12:19:02 -0400 Message-ID: <4EA9846E.7040903@suse.de> Date: Thu, 27 Oct 2011 18:18:54 +0200 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1319715472-16286-1-git-send-email-peter.maydell@linaro.org> <1319715472-16286-2-git-send-email-peter.maydell@linaro.org> <4EA97304.9080500@suse.de> In-Reply-To: <4EA97304.9080500@suse.de> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v2 1/3] qemu-tls.h: Add abstraction layer for TLS variables List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: Paolo Bonzini , "Dr. David Alan Gilbert" , qemu-devel@nongnu.org, Jan Kiszka , patches@linaro.org Am 27.10.2011 17:04, schrieb Andreas F=E4rber: > Am 27.10.2011 13:37, schrieb Peter Maydell: >> Add an abstraction layer for defining and using thread-local >> variables. For the moment this is implemented only for Linux, >> which means they can only be used in restricted circumstances. >> The abstraction layer allows us to add POSIX and Win32 support >> later. >> >=20 > [Paolo's SoB missing] >=20 >> Signed-off-by: Peter Maydell >> --- >> qemu-tls.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 files changed, 51 insertions(+), 0 deletions(-) >> create mode 100644 qemu-tls.h >> >> diff --git a/qemu-tls.h b/qemu-tls.h >> new file mode 100644 >> index 0000000..d96a159 >> --- /dev/null >> +++ b/qemu-tls.h >> @@ -0,0 +1,51 @@ >> +/* >> + * Abstraction layer for defining and using TLS variables >> + * >> + * Copyright (c) 2011 Red Hat, Inc, Linaro Limited >=20 > The concatenation looks kind of funny. ;) >=20 >> + * >> + * Authors: >> + * Paolo Bonzini >> + * Peter Maydell >> + * >> + * This program is free software; you can redistribute it and/or >> + * modify it under the terms of the GNU General Public License as >> + * published by the Free Software Foundation; either version 2 of >> + * the License, or (at your option) any later version. >> + * >> + * This program is distributed in the hope that it will be useful, >> + * but WITHOUT ANY WARRANTY; without even the implied warranty of >> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the >> + * GNU General Public License for more details. >> + * >> + * You should have received a copy of the GNU General Public License = along >> + * with this program; if not, see . >> + */ >> + >> +#ifndef QEMU_TLS_GCC_H >> +#define QEMU_TLS_GCC_H >=20 > Extra _GCC. But does no harm. >=20 >> + >> +/* Per-thread variables. Note that we only have implementations >> + * which are really thread-local on Linux; the dummy implementations >> + * define plain global variables. >> + * >> + * This means that for the moment use should be restricted to >> + * per-VCPU variables, which are OK because: >> + * - the only -user mode supporting multiple VCPU threads is linux-u= ser >> + * - TCG system mode is single-threaded regarding VCPUs >> + * - KVM system mode is multi-threaded but limited to Linux >> + * >> + * TODO: proper implementations via Win32 .tls sections and >> + * POSIX pthread_getspecific. >> + */ >> +#ifdef __linux__ >> +#define DECLARE_TLS(type, x) extern DEFINE_TLS(type, x) >> +#define DEFINE_TLS(type, x) __thread __typeof__(type) tls__##x >> +#define get_tls(x) tls__##x >> +#else >> +/* Dummy implementations which define plain global variables */ >> +#define DECLARE_TLS(type, x) extern DEFINE_TLS(type, x) >> +#define DEFINE_TLS(type, x) __typeof__(type) tls__##x >> +#define get_tls(x) tls__##x >> +#endif >> + >> +#endif >=20 > Looks okay to me. Reviewed-by: Andreas F=E4rber --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg