Author: jilles
Date: Wed Jan 28 22:42:56 2015
New Revision: 277862
URL: https://svnweb.freebsd.org/changeset/base/277862

Log:
  sem_post(): Fix and document semaphore value overflow error.
  
  The error code is per Austin Group issue #315.
  
  I provided different wording for the manual page change.
  
  Submitted by: pluknet
  MFC after:    1 week

Modified:
  head/lib/libc/gen/sem_new.c
  head/lib/libc/gen/sem_post.3

Modified: head/lib/libc/gen/sem_new.c
==============================================================================
--- head/lib/libc/gen/sem_new.c Wed Jan 28 22:32:03 2015        (r277861)
+++ head/lib/libc/gen/sem_new.c Wed Jan 28 22:42:56 2015        (r277862)
@@ -439,8 +439,10 @@ _sem_post(sem_t *sem)
 
        do {
                count = sem->_kern._count;
-               if (USEM_COUNT(count) + 1 > SEM_VALUE_MAX)
-                       return (EOVERFLOW);
+               if (USEM_COUNT(count) + 1 > SEM_VALUE_MAX) {
+                       errno = EOVERFLOW;
+                       return (-1);
+               }
        } while (!atomic_cmpset_rel_int(&sem->_kern._count, count, count + 1));
        if (count & USEM_HAS_WAITERS)
                usem_wake(&sem->_kern);

Modified: head/lib/libc/gen/sem_post.3
==============================================================================
--- head/lib/libc/gen/sem_post.3        Wed Jan 28 22:32:03 2015        
(r277861)
+++ head/lib/libc/gen/sem_post.3        Wed Jan 28 22:42:56 2015        
(r277862)
@@ -27,7 +27,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd February 15, 2000
+.Dd January 28, 2015
 .Dt SEM_POST 3
 .Os
 .Sh NAME
@@ -65,6 +65,9 @@ The
 .Fa sem
 argument
 points to an invalid semaphore.
+.It Bq Er EOVERFLOW
+The semaphore value would exceed
+.Dv SEM_VALUE_MAX .
 .El
 .Sh SEE ALSO
 .Xr sem_getvalue 3 ,
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to