diff options
Diffstat (limited to 'libs/pthreads/src/ptw32_reuse.c')
-rw-r--r-- | libs/pthreads/src/ptw32_reuse.c | 64 |
1 files changed, 35 insertions, 29 deletions
diff --git a/libs/pthreads/src/ptw32_reuse.c b/libs/pthreads/src/ptw32_reuse.c index 7325857ba2..f6270bb08f 100644 --- a/libs/pthreads/src/ptw32_reuse.c +++ b/libs/pthreads/src/ptw32_reuse.c @@ -6,64 +6,70 @@ * * -------------------------------------------------------------------------- * - * Pthreads-win32 - POSIX Threads Library for Win32 + * Pthreads4w - POSIX Threads Library for Win32 * Copyright(C) 1998 John E. Bossom - * Copyright(C) 1999,2005 Pthreads-win32 contributors - * - * Contact Email: rpj@callisto.canberra.edu.au - * + * Copyright(C) 1999-2018, Pthreads4w contributors + * + * Homepage: https://sourceforge.net/projects/pthreads4w/ + * * The current list of contributors is contained * in the file CONTRIBUTORS included with the source * code distribution. The list can also be seen at the * following World Wide Web location: - * http://sources.redhat.com/pthreads-win32/contributors.html - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library in the file COPYING.LIB; - * if not, write to the Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA + * https://sourceforge.net/p/pthreads4w/wiki/Contributors/ + * + * This file is part of Pthreads4w. + * + * Pthreads4w 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 3 of the License, or + * (at your option) any later version. + * + * Pthreads4w 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 Pthreads4w. If not, see <http://www.gnu.org/licenses/>. * */ +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + #include "pthread.h" #include "implement.h" /* * How it works: - * A pthread_t is a struct (2x32 bit scalar types on IA-32, 2x64 bit on IA-64) + * A pthread_t is a struct (2x32 bit scalar types on x86, 2x64 bit on x86_64) + * [FIXME: This is not true, x86_64 is 64 bit pointer and 32 bit counter. This + * should be fixed in version 3.0.0] * which is normally passed/returned by value to/from pthreads routines. * Applications are therefore storing a copy of the struct as it is at that * time. * * The original pthread_t struct plus all copies of it contain the address of * the thread state struct ptw32_thread_t_ (p), plus a reuse counter (x). Each - * ptw32_thread_t contains the original copy of it's pthread_t. + * ptw32_thread_t contains the original copy of it's pthread_t (ptHandle). * Once malloced, a ptw32_thread_t_ struct is not freed until the process exits. - * + * * The thread reuse stack is a simple LILO stack managed through a singly * linked list element in the ptw32_thread_t. * * Each time a thread is destroyed, the ptw32_thread_t address is pushed onto the * reuse stack after it's ptHandle's reuse counter has been incremented. - * + * * The following can now be said from this: - * - two pthread_t's are identical if their ptw32_thread_t reference pointers - * are equal and their reuse counters are equal. That is, + * - two pthread_t's refer to the same thread iff their ptw32_thread_t reference + * pointers are equal and their reuse counters are equal. That is, * * equal = (a.p == b.p && a.x == b.x) * * - a pthread_t copy refers to a destroyed thread if the reuse counter in - * the copy is not equal to the reuse counter in the original. + * the copy is not equal to (i.e less than) the reuse counter in the original. * * threadDestroyed = (copy.x != ((ptw32_thread_t *)copy.p)->ptHandle.x) * @@ -108,7 +114,7 @@ ptw32_threadReusePop (void) * Push a clean pthread_t struct onto the reuse stack. * Must be re-initialised when reused. * All object elements (mutexes, events etc) must have been either - * detroyed before this, or never initialised. + * destroyed before this, or never initialised. */ void ptw32_threadReusePush (pthread_t thread) |