123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #include "pthread.h"
- #include "implement.h"
- static struct pthread_mutexattr_t_ pte_recursive_mutexattr_s =
- {
- PTHREAD_PROCESS_PRIVATE, PTHREAD_MUTEX_RECURSIVE
- };
- static struct pthread_mutexattr_t_ pte_errorcheck_mutexattr_s =
- {
- PTHREAD_PROCESS_PRIVATE, PTHREAD_MUTEX_ERRORCHECK
- };
- static pthread_mutexattr_t pte_recursive_mutexattr = &pte_recursive_mutexattr_s;
- static pthread_mutexattr_t pte_errorcheck_mutexattr = &pte_errorcheck_mutexattr_s;
- int
- pte_mutex_check_need_init (pthread_mutex_t * mutex)
- {
- register int result = 0;
- register pthread_mutex_t mtx;
-
- pte_osMutexLock (pte_mutex_test_init_lock);
-
- mtx = *mutex;
- if (mtx == PTHREAD_MUTEX_INITIALIZER)
- {
- result = pthread_mutex_init (mutex, NULL);
- }
- else if (mtx == PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
- {
- result = pthread_mutex_init (mutex, &pte_recursive_mutexattr);
- }
- else if (mtx == PTHREAD_ERRORCHECK_MUTEX_INITIALIZER)
- {
- result = pthread_mutex_init (mutex, &pte_errorcheck_mutexattr);
- }
- else if (mtx == NULL)
- {
-
- result = EINVAL;
- }
- pte_osMutexUnlock(pte_mutex_test_init_lock);
- return (result);
- }
|