Fix SXEmacs semaphores so that they deal with spurius pthreads conditional variable...
authorNelson Ferreira <nelson.ferreira@ieee.org>
Sun, 20 Jan 2013 22:14:31 +0000 (17:14 -0500)
committerNelson Ferreira <nelson.ferreira@ieee.org>
Sun, 20 Jan 2013 22:14:31 +0000 (17:14 -0500)
commit42de8526277141d688c3e1da0efd878a5585973b
tree83228eff6f22a2cad7365ac9ac2aabf5c51e689d
parent549d757d733682cd019e13c97d2fa1643f6ade2e
Fix SXEmacs semaphores so that they deal with spurius pthreads conditional variable wakeups

* src/semaphore.h (struct sxe_semaphore_s): add a generation count
* src/semaphore.h (struct sxe_msemaphore_s): ditto

* src/semaphore.h (sxe_msemaphore_init): initialize generation
* src/semaphore.h (sxe_semaphore_init): ditto

* src/semaphore.h (sxe_msemaphore_trigger): increment generation before signal
* src/semaphore.h (sxe_msemaphore_trigger): ditto
* src/semaphore.h (sxe_msemaphore_trigger_all): ditto
* src/semaphore.h (sxe_msemaphore_trigger_all): ditto

* src/semaphore.h (sxe_msemaphore_synchronise): Wait again if
generation is still the same (ie no signal occurred).

* src/semaphore.h (sxe_msemaphore_synchronise): ditto.

Signed-off-by: Nelson Ferreira <nelson.ferreira@ieee.org>
src/semaphore.h