diff options
author | rpj <rpj> | 2002-01-04 04:53:36 +0000 |
---|---|---|
committer | rpj <rpj> | 2002-01-04 04:53:36 +0000 |
commit | 6922362c66bbfaa3ac9b7bb6be24368d790d28d6 (patch) | |
tree | c63857fdc9b19e00bf29a07b246e3cdb7d603fd9 | |
parent | 6f68e7b50e0bb837d02dc2cb8a7bc5887534d7b8 (diff) |
* attr.c (pthread_attr_setscope): Add more error
checking and actually store the scope value even
though it's not really necessary.
(pthread_attr_getscope): Return stored value.
* implement.h (pthread_attr_t_): Add new scope element.
* ANNOUNCE: Fix out of date comment next to
pthread_attr_setscope in conformance section.
-rw-r--r-- | ANNOUNCE | 19 | ||||
-rw-r--r-- | COPYING | 19 | ||||
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | attr.c | 18 | ||||
-rw-r--r-- | implement.h | 1 |
5 files changed, 49 insertions, 18 deletions
@@ -27,10 +27,20 @@ announcement for the list of contributors. Changes since the last snapshot
-------------------------------
+platform dependence
+-------------------
+As Win9x doesn't provide one, the library now contains
+it's own InterlockedCompareExchange() routine. It is used to
+implement spinlocks and barriers, and soon may be used in mutexes.
+This routine relies on the CMPXCHG machine instruction which
+is only available in i486 or above CPUs. This library
+(from snapshot 20010712 onwards) therefore no longer runs on
+i386 platforms.
+
rwlocks
-------
Restored pthread_rwlock_wrlock() as a cancelation point as permitted
-by POSIX 1003.1j. (Was prematurely disabled in the the last snapshot.)
+by POSIX 1003.1j. (Was prematurely disabled in the last snapshot.)
Bug fixes
---------
@@ -39,6 +49,9 @@ pthread_mutexattr_getpshared, pthread_barrierattr_init, pthread_barrierattr_getpshared, and pthread_condattr_getpshared.
- Scott McCaskill <scott@magruder.org>
+Removed potential race condition in pthread_mutex_trylock and
+pthread_mutex_lock;
+- Alexander Terekhov <TEREKHOV@de.ibm.com>
---------------------------
Known bugs in this snapshot
@@ -256,8 +269,8 @@ The following functions are implemented: pthread_setschedparam
pthread_getconcurrency
pthread_setconcurrency
- pthread_attr_getscope (returns an error ENOSYS)
- pthread_attr_setscope (returns an error ENOSYS)
+ pthread_attr_getscope
+ pthread_attr_setscope (only supports PTHREAD_SCOPE_SYSTEM)
sched_get_priority_max (POSIX 1b)
sched_get_priority_min (POSIX 1b)
sched_rr_get_interval (POSIX 1b - returns an error ENOTSUP)
@@ -58,14 +58,17 @@ Pthreads-win32 copyrights and exception files is covered under the following GNU Lesser General Public License Copyrights: - Copyright (C) 1998 Ben Elliston and Ross Johnson - Copyright (C) 1999,2000,2001 Ross Johnson - - Please note that the names given in the Copyright above do not - imply authorship of the source code. The names of all - substantial contributors of intellectual works incorporated - in the pthreads-win32 distribution are listed in the file - CONTRIBUTORS. + Pthreads-win32 - POSIX Threads Library for Win32 + Copyright(C) 1998 John E. Bossom + Copyright(C) 1999,2002 Pthreads-win32 contributors + + The current list of contributors is contained + in the file CONTRIBUTORS included with the source + code distribution. The current list of CONTRIBUTORS + can also be seen at the following WWW location: + http://sources.redhat.com/pthreads-win32/contributors.html + + Contact Email: rpj@ise.canberra.edu.au These files are not covered under one of the Copyrights listed above: @@ -1,3 +1,13 @@ +2002-01-04 Ross Johnson <rpj@setup1.ise.canberra.edu.au> + + * attr.c (pthread_attr_setscope): Add more error + checking and actually store the scope value even + though it's not really necessary. + (pthread_attr_getscope): Return stored value. + * implement.h (pthread_attr_t_): Add new scope element. + * ANNOUNCE: Fix out of date comment next to + pthread_attr_setscope in conformance section. + 2001-12-21 Ross Johnson <rpj@special.ise.canberra.edu.au> Contributed by - Alexander Terekhov <TEREKHOV@de.ibm.com> @@ -360,6 +360,7 @@ pthread_attr_init(pthread_attr_t *attr) */ attr_result->param.sched_priority = THREAD_PRIORITY_NORMAL; attr_result->inheritsched = PTHREAD_EXPLICIT_SCHED; + attr_result->contentionscope = PTHREAD_SCOPE_SYSTEM; attr_result->valid = PTW32_ATTR_VALID; @@ -515,12 +516,15 @@ int pthread_attr_setscope(pthread_attr_t *attr, int contentionscope) { #ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (contentionscope != PTHREAD_SCOPE_SYSTEM) - { - return ENOTSUP; - } - - return 0; + switch (contentionscope) { + case PTHREAD_SCOPE_SYSTEM: + attr->contentionscope = contentionscope; + return 0; + case PTHREAD_SCOPE_PROCESS: + return ENOTSUP; + default: + return EINVAL; + } #else return ENOSYS; #endif @@ -531,7 +535,7 @@ int pthread_attr_getscope(const pthread_attr_t *attr, int *contentionscope) { #ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - *contentionscope = PTHREAD_SCOPE_SYSTEM; + *contentionscope = attr->contentionscope; return 0; #else return ENOSYS; diff --git a/implement.h b/implement.h index 5eb46f4..3f2690e 100644 --- a/implement.h +++ b/implement.h @@ -127,6 +127,7 @@ struct pthread_attr_t_ { int detachstate; struct sched_param param; int inheritsched; + int contentionscope; #if HAVE_SIGSET_T sigset_t sigmask; #endif /* HAVE_SIGSET_T */ |