diff options
| author | Meco Man <[email protected]> | 2021-10-17 17:19:12 -0400 |
|---|---|---|
| committer | Meco Man <[email protected]> | 2021-10-17 17:19:12 -0400 |
| commit | b513d37cf2fc33c2dd20021316533feaac0bef23 (patch) | |
| tree | f14e24d145a40620dbb8fd5a5d807b972ec4a1d5 /components/libc/pthreads/pthread_barrier.c | |
| parent | 9fe546b0d86b17c64e57447913c8a9f3a9c40534 (diff) | |
[libc][posix] create 'posix' folder and move related files into it
Diffstat (limited to 'components/libc/pthreads/pthread_barrier.c')
| -rw-r--r-- | components/libc/pthreads/pthread_barrier.c | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/components/libc/pthreads/pthread_barrier.c b/components/libc/pthreads/pthread_barrier.c deleted file mode 100644 index 1a5b7fa3f9..0000000000 --- a/components/libc/pthreads/pthread_barrier.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright (c) 2006-2021, RT-Thread Development Team - * - * SPDX-License-Identifier: Apache-2.0 - * - * Change Logs: - * Date Author Notes - * 2010-10-26 Bernard the first version - */ - -#include <pthread.h> - -int pthread_barrierattr_destroy(pthread_barrierattr_t *attr) -{ - if (!attr) - return EINVAL; - - return 0; -} -RTM_EXPORT(pthread_barrierattr_destroy); - -int pthread_barrierattr_init(pthread_barrierattr_t *attr) -{ - if (!attr) - return EINVAL; - *attr = PTHREAD_PROCESS_PRIVATE; - - return 0; -} -RTM_EXPORT(pthread_barrierattr_init); - -int pthread_barrierattr_getpshared(const pthread_barrierattr_t *attr, - int *pshared) -{ - if (!attr) - return EINVAL; - *pshared = (int)*attr; - - return 0; -} -RTM_EXPORT(pthread_barrierattr_getpshared); - -int pthread_barrierattr_setpshared(pthread_barrierattr_t *attr, int pshared) -{ - if (!attr) - return EINVAL; - if (pshared == PTHREAD_PROCESS_PRIVATE) - attr = PTHREAD_PROCESS_PRIVATE; - - return EINVAL; -} -RTM_EXPORT(pthread_barrierattr_setpshared); - -int pthread_barrier_destroy(pthread_barrier_t *barrier) -{ - rt_err_t result; - - if (!barrier) - return EINVAL; - - result = pthread_cond_destroy(&(barrier->cond)); - - return result; -} -RTM_EXPORT(pthread_barrier_destroy); - -int pthread_barrier_init(pthread_barrier_t *barrier, - const pthread_barrierattr_t *attr, - unsigned count) -{ - if (!barrier) - return EINVAL; - if (attr && (*attr != PTHREAD_PROCESS_PRIVATE)) - return EINVAL; - - barrier->count = count; - pthread_cond_init(&(barrier->cond), NULL); - pthread_mutex_init(&(barrier->mutex), NULL); - - return 0; -} -RTM_EXPORT(pthread_barrier_init); - -int pthread_barrier_wait(pthread_barrier_t *barrier) -{ - rt_err_t result; - if (!barrier) - return EINVAL; - - result = pthread_mutex_lock(&(barrier->mutex)); - if (result != 0) - return EINVAL; - - if (barrier->count == 0) - result = EINVAL; - else - { - barrier->count -= 1; - if (barrier->count == 0) /* broadcast condition */ - pthread_cond_broadcast(&(barrier->cond)); - else - pthread_cond_wait(&(barrier->cond), &(barrier->mutex)); - } - - pthread_mutex_unlock(&(barrier->mutex)); - - return result; -} -RTM_EXPORT(pthread_barrier_wait); - |
