CFT: patch for process shared pthread objects

David Xu davidxu at freebsd.org
Tue Nov 30 05:48:11 UTC 2010


Hi,

I finally have worked out first patch to make our pthread library
support process shared pthread objects:

http://people.freebsd.org/~davidxu/pshared/patch1.diff

Many changes are related to redesigned pthread condition variable,
these changes try to eliminate extra context switch when
pthread_cond_signal is called which could reduce performance.
There are two parts in the condition variable implementation.
A pure usermode condition variable and kernel-based condition
variable. All priority protected, inherited mutexs and process
shared mutex will use kernel base condition variable, for a
normal mutex, the usermode condition variable is used.
Both user-mode and kernel-based try to migrate a thread from
condition variable wait queue to mutex wait queue.

Another added feature is robust mutex support,
http://www.opengroup.org/onlinepubs/9699919799/functions/pthread_mutexattr_setrobust.html
Which I think is mostly used for process-shared mutex.

In the patch, if mutex attribute is robust, the thread library
also uses kernel base condition variable which does not have
internal lock in userland.

Regards,
David Xu



More information about the freebsd-current mailing list