From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17651 invoked by alias); 18 Oct 2003 13:06:10 -0000 Mailing-List: contact pthreads-win32-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: pthreads-win32-owner@sources.redhat.com Received: (qmail 17640 invoked from network); 18 Oct 2003 13:06:06 -0000 Received: from unknown (HELO www.sveasoft.com) (213.242.178.190) by sources.redhat.com with SMTP; 18 Oct 2003 13:06:06 -0000 Received: from sveasoft.com (du-32-94.ppp.telenordia.se [62.127.32.94]) by www.sveasoft.com (8.12.8/8.12.5) with ESMTP id h9IC29SR022100; Sat, 18 Oct 2003 14:02:10 +0200 Message-ID: <3F913A57.8000102@sveasoft.com> Date: Sat, 18 Oct 2003 13:06:00 -0000 From: James Ewing Organization: Sveasoft Ltd. User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5a) Gecko/20030620 X-Accept-Language: en-us, sv, en MIME-Version: 1.0 To: raque@research.bell-labs.com CC: pthreads-win32@sources.redhat.com Subject: Re: use pthread under winCE References: <3F8F10F2.8070509@lucent.com> <3F8FAAB4.9090201@sveasoft.com> <3F903F95.80205@lucent.com> In-Reply-To: <3F903F95.80205@lucent.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2003/txt/msg00105.txt.bz2 Hi Benoit, I've attached my modifications to the ptw32_getprocessors.c file that fixes the GetProcessAffinityMask for WINCE. It just forces the processor count to one. I looked in the pthread.h file and found that if you don't have _UWIN defined, pthreads own internal _errno will be used. Make sure _UWIN is *not* defined. See line 1143 in pthread.h. It was many moons ago that I tweaked pthreads for WIN32 for WINCE and I've forgotten much of what needed to be done. If anyone wants a diff of my build against the current CVS version just let me know and I'll send it out. It might be a good idea to test it a bit and then merge it into the main CVS tree. I use the same source for both WIN32 and WINCE pthreads builds. Best, James [ ptw32_getprocessors.c] ---------------------------------------------------------------------- /* * ptw32_getprocessors() * * Get the number of CPUs available to the process. * * If the available number of CPUs is 1 then pthread_spin_lock() * will block rather than spin if the lock is already owned. * * pthread_spin_init() calls this routine when initialising * a spinlock. If the number of available processors changes * (after a call to SetProcessAffinityMask()) then only * newly initialised spinlocks will notice. */ int ptw32_getprocessors(int * count) { int result = 0; #ifndef WINCE DWORD vProcessCPUs; DWORD vSystemCPUs; if (GetProcessAffinityMask(GetCurrentProcess(), &vProcessCPUs, &vSystemCPUs)) { DWORD bit; int CPUs = 0; for (bit = 1; bit != 0; bit <<= 1) { if (vProcessCPUs & bit) { CPUs++; } } *count = CPUs; } else { result = EAGAIN; } #else *count = 1; #endif return(result); // end of file -----------------------------------------------------------