libc: Fix sem_post() implementation to wake up all waiting threads.

This also allows us to optimize the case where we increment an
uncontended semaphore (no need to call futex_wake() then).

Change-Id: Iad48efe8551dc66dc89d3e3f18c001e5a6c1939f
diff --git a/libc/docs/CHANGES.TXT b/libc/docs/CHANGES.TXT
index 5a7a1ac..9389f7a 100644
--- a/libc/docs/CHANGES.TXT
+++ b/libc/docs/CHANGES.TXT
@@ -10,6 +10,10 @@
 - <semaphore.h>: Use private futexes for semaphore implementation,
   unless your set 'pshared' to non-0 when calling sem_init().
 
+  Also fixed a bug in sem_post() to make it wake up all waiting
+  threads, instead of one. As a consequence, the maximum semaphore
+  value is now reduced to 0x3fffffff.
+
 - <math.h>: Added sincos(), sincosf() and sincosl() (GLibc compatibility).
 
 - <sys/sysinfo.h>: Added missing sysinfo() system call implementation
@@ -59,7 +63,6 @@
 
 - <sys/select.h>: add missing declaration for pselect()
 
-- 
 
 -------------------------------------------------------------------------------
 Differences between Android 2.2. and Android 2.1: