[PATCH] Add support for non portable mutex initializers

Thomas Pfaff tpfaff@gmx.net
Fri Feb 20 07:48:00 GMT 2004


This patch will add support for PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP,
PTHREAD_NORMAL_MUTEX_INITIALIZER_NP and
PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP (+ some small bugfixes).
Attached are also testcases for these initializers.
The initializer names are borrowed from linux nptl.

These initializers can be used for example to enable thread safe stdio
in newlib without moving __sinit. I really want to get this fixed.

Thomas

P.S.: I will be on winter vacation next week, no reply during that
time.


2004-02-20  Thomas Pfaff  <tpfaff@gmx.net>

	* winsup.api/pthread/mutex8e.c: New testcase.
	* winsup.api/pthread/mutex8n.c: Ditto.
	* winsup.api/pthread/mutex8r.c: Ditto.

and

2004-02-20  Thomas Pfaff  <tpfaff@gmx.net>

	* include/pthread.h (PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP):
	New define.
	(PTHREAD_NORMAL_MUTEX_INITIALIZER_NP): Ditto.
	(PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP): Ditto.
	* thread.cc (pthread_mutex::is_good_initializer):
	Check for all posssible initializers
	(pthread_mutex::is_good_initializer_or_object): Ditto.
	(pthread_mutex::is_good_initializer_or_bad_object): Ditto.
	(verifyable_object_isvalid): Support up to three static
	initializers.
	(verifyable_object_isvalid (void const *,long)): Remove.
	(pthread_cond::is_good_initializer_or_bad_object): Remove
	unneeded objectState var.
	(pthread_cond::init): Condition remains unchanged when creation
	has failed.
	(pthread_rwlock::is_good_initializer_or_bad_object): Remove
	unneeded objectState var.
	(pthread_rwlock::init): Rwlock remains unchanged when creation
	has failed.
	(pthread_mutex::init): Remove obsolete comment.
	Mutex remains unchanged when creation has failed. Add support
	for new initializers.
	(pthread_mutex_getprioceiling): Do not create mutex,
	just return ENOSYS.
	(pthread_mutex_lock): Simplify.
	(pthread_mutex_trylock): Remove unneeded local themutex.
	(pthread_mutex_unlock): Just return EPERM if mutex is not
	initialized.
	(pthread_mutex_setprioceiling): Do not create mutex,
	just return ENOSYS.
	* thread.h (verifyable_object_isvalid): Support up to three
	static initializers.
	(verifyable_object_isvalid (void const *,long)): Remove
	prototype.
	(pthread_mutex::init): Add optional initializer to parameter
	list.


-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: mutex8r.c
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20040220/9d0e664d/attachment.c>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: mutex8n.c
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20040220/9d0e664d/attachment-0001.c>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: mutex8e.c
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20040220/9d0e664d/attachment-0002.c>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: mutex.patch
URL: <http://cygwin.com/pipermail/cygwin-patches/attachments/20040220/9d0e664d/attachment.ksh>


More information about the Cygwin-patches mailing list