This is the mail archive of the cygwin-patches@cygwin.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Add support for non portable mutex initializers


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.


Attachment: mutex8r.c
Description: Text document

Attachment: mutex8n.c
Description: Text document

Attachment: mutex8e.c
Description: Text document

Attachment: mutex.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]