From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jamie Lokier Subject: Re: [Qemu-devel] [PATCH] use a thread id variable Date: Sun, 9 Mar 2008 11:58:26 +0000 Message-ID: <20080309115826.GA8077@shareable.org> References: <12047472711034-git-send-email-gcosta@redhat.com> <12047472772114-git-send-email-gcosta@redhat.com> <47D3AD53.6030809@codefidence.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: kvm-devel@lists.sourceforge.net, chrisw@sous-sol.org, Glauber Costa To: qemu-devel@nongnu.org Return-path: Content-Disposition: inline In-Reply-To: <47D3AD53.6030809@codefidence.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: kvm-devel-bounces@lists.sourceforge.net Errors-To: kvm-devel-bounces@lists.sourceforge.net List-Id: kvm.vger.kernel.org Gilad Ben-Yossef wrote: > Glauber Costa wrote: > >This patch introduces a "thread_id" variable to CPUState. > >It's duty will be to hold the process, or more generally, thread > >id of the current executing cpu > > > > env->nb_watchpoints = 0; > >+#ifdef __WIN32 > >+ env->thread_id = GetCurrentProcessId(); > >+#else > >+ env->thread_id = getpid(); > >+#endif > > *penv = env; > > hmm... maybe I'm missing something, but in Linux at least I think you > would prefer this to be gettid() rather then getpid as each CPU has it's > own thread, not a different process. On most platforms, getpid() returns the same value for all threads, so it's not useful as a thread id. On Linux, it depends which version of threads. The old package, LinuxThreads, has different getpid() for each thread. The current one, NPTL, has them all the same. What you're supposed to do with pthreads in general is use pthread_self(). Btw, unfortunately pthread_self() is not safe to call from signal handlers. -- Jamie ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/