[PATCH] add support for PTHREAD_MUTEX_NORMAL

Thomas Pfaff tpfaff@gmx.net
Thu Feb 27 12:26:00 GMT 2003


This patch adds support for PTHREAD_MUTEX_NORMAL (fast and
deadlocking) mutexes and slightly modifies the lock counter logic.
The counter now start at 0.

Attached are also additional testcases for the MUTEX_NORMAL type.

2002-03-27  Thomas Pfaff  <tpfaff@gmx.net>

	* include/pthread.h (PTHREAD_MUTEX_NORMAL): New define.
	* thread.cc: Remove errno.h include.
	(pthread::precreate): Change internal mutex type to normal.
	(pthread_mutex::canBeUnlocked): Implement.
	(pthread_mutex::pthread_mutex): Initialize lock_counter with 0.
	(pthread_mutex::Lock): Rename to _Lock. Add self parameter.
	Change lock_counter logic. Update SetOwner call.
	(pthread_mutex::TryLock): Rename to _TryLock. Add self parameter.
	Change lock_counter logic. Update SetOwner call.
	(pthread_mutex::UnLock): Rename to _UnLock. Add self parameter.
	Change lock_counter logic.
	(pthread_mutex::Destroy): Rename to _Destroy. Update TryLock call.
	(pthread_mutex::SetOwner): Move to thread.h as inline.
	(pthread_mutex::LockRecursive): Ditto.
	(pthread_mutex::fixup_after_fork): Change lock_counter logic.
	(__pthread_mutexattr_settype): Add PTHREAD_MUTEX_NORMAL to valid
	types check.
	* thread.h: Include errno.h and limits.h
	(MUTEX_LOCK_COUNTER_INITIAL): Remove
	(MUTEX_OWNER_ANONYMOUS): New define.
	(pthread_mutex::canBeUnlocked): New static method.
	(pthread_mutex::lock_counter): Change type to unsigned long.
	(pthread_mutex::_Lock): New method.
	(pthread_mutex::_TryLock): New method.
	(pthread_mutex::_UnLock): New method.
	(pthread_mutex::_Destroy): New method.
	(pthread_mutex::GetPthreadSelf): New method.
	(pthread_mutex::Lock): Call _Lock with pthread_self pointer.
	(pthread_mutex::TryLock): Call _TryLock with pthread_self pointer.
	(pthread_mutex::UnLock): Call _UnLock with pthread_self pointer.
	(pthread_mutex::Destroy): Call _Destroy with pthread_self pointer.
	(pthread_mutex::SetOwner): Moved from thread.cc as inline.
	(pthread_mutex::LockRecursive): Ditto.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: mutexn.tar.gz
Type: application/x-gzip
Size: 963 bytes
Desc: 
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20030227/e9bd46e9/attachment.bin>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: pthread_mutex_normal.patch
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20030227/e9bd46e9/attachment.ksh>


More information about the Cygwin-patches mailing list