You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/11/11 00:56:54 UTC

[incubator-nuttx] branch master updated: pthread_barrier:don't destory when barrier used

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 634bdeaa5c pthread_barrier:don't destory when barrier used
634bdeaa5c is described below

commit 634bdeaa5c59c38a6d6b030b5c2a2945dab8711e
Author: anjiahao <an...@xiaomi.com>
AuthorDate: Wed Nov 9 17:13:10 2022 +0800

    pthread_barrier:don't destory when barrier used
    
    this is fix a ltp test case and update
    the error code of pthread_barrierdestroy
    
    ltptcase is : apps/testing/ltp/ltp/testcases/open_posix_testsuite/conformance/interfaces/pthread_barrier_destroy/2-1.c
    Signed-off-by: anjiahao <an...@xiaomi.com>
---
 libs/libc/pthread/pthread_barrierdestroy.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/libs/libc/pthread/pthread_barrierdestroy.c b/libs/libc/pthread/pthread_barrierdestroy.c
index 03bd2d9900..11625f5c4c 100644
--- a/libs/libc/pthread/pthread_barrierdestroy.c
+++ b/libs/libc/pthread/pthread_barrierdestroy.c
@@ -61,6 +61,7 @@
 
 int pthread_barrier_destroy(FAR pthread_barrier_t *barrier)
 {
+  int semcount;
   int ret = OK;
 
   if (!barrier)
@@ -69,6 +70,17 @@ int pthread_barrier_destroy(FAR pthread_barrier_t *barrier)
     }
   else
     {
+      ret = sem_getvalue(&barrier->sem, &semcount);
+      if (ret != OK)
+        {
+          return ret;
+        }
+
+      if (semcount < 0)
+        {
+          return EBUSY;
+        }
+
       sem_destroy(&barrier->sem);
       barrier->count = 0;
     }