fork of 9front i guess
Go to file
cinap_lenrek f43df64325 libc: fix wunlock() libthread deadlock
when wunlock() was used by threads running within the same proc,
the wunlock() can deadlock as it keeps holding the RWLock.lock
spinlock while indirectly calling _threadrendezvous(). when
_threadrendezvous() switches to another thread in the same proc,
then that thread can hang at rlock()/wlock()/runlock() again
waiting for wunlock() to release the spinlock which will never
happen as lock() does not schedule threads.

wunlock() is changed to release the spinlock during rendezvous
wakeup of readers. note that this is a bit dangerous as more
readers might queue concurrently now which means that if
we cannot keep up with the wakeups, we might keep on waking
readers forever. that will be another patch for the future.
2015-08-10 23:13:41 +02:00
386 change Rune from ushort to uint for to 21 bit runes (thanks mischief!) 2013-10-17 12:02:45 +02:00
68000 change Rune from ushort to uint for to 21 bit runes (thanks mischief!) 2013-10-17 12:02:45 +02:00
68020 change Rune from ushort to uint for to 21 bit runes (thanks mischief!) 2013-10-17 12:02:45 +02:00
acme acme/win: fix mistake 2014-12-12 21:18:31 +01:00
adm/timezone add Uruguay timezone (from sources) 2013-01-25 14:13:01 +01:00
alpha change Rune from ushort to uint for to 21 bit runes (thanks mischief!) 2013-10-17 12:02:45 +02:00
amd64 ape: add stdint.h, fix SSIZE_MAX and add SIZE_MAX to limits.h 2015-07-13 02:36:48 +02:00
arm getfcr: change getfcr/setfcr to use VFP 2014-12-25 17:44:49 +01:00
lib fortunes: If you want to do the work, I will review the results. 2015-08-09 00:36:10 -04:00
mips change Rune from ushort to uint for to 21 bit runes (thanks mischief!) 2013-10-17 12:02:45 +02:00
power change Rune from ushort to uint for to 21 bit runes (thanks mischief!) 2013-10-17 12:02:45 +02:00
power64 change Rune from ushort to uint for to 21 bit runes (thanks mischief!) 2013-10-17 12:02:45 +02:00
rc ipv6on: fix search for ip attribute (thanks kenji arisawa) 2015-08-02 14:48:53 +02:00
sparc change Rune from ushort to uint for to 21 bit runes (thanks mischief!) 2013-10-17 12:02:45 +02:00
sparc64 change Rune from ushort to uint for to 21 bit runes (thanks mischief!) 2013-10-17 12:02:45 +02:00
spim add /spim 2015-08-08 08:38:25 +02:00
sys libc: fix wunlock() libthread deadlock 2015-08-10 23:13:41 +02:00
.hgignore fix library mkfiles for objtype=spim 2015-08-08 08:04:41 +02:00