1 #include "tls_test_frame.h"
2
3 /* Create semaphore. */
tls_test_semaphore_create(TLS_TEST_SEMAPHORE ** semaphore_ptr_ptr,UINT initial_value)4 INT tls_test_semaphore_create( TLS_TEST_SEMAPHORE** semaphore_ptr_ptr, UINT initial_value)
5 {
6 INT status;
7 TLS_TEST_SEMAPHORE* semaphore_ptr = *semaphore_ptr_ptr;
8 semaphore_ptr = mmap( NULL, sizeof(TLS_TEST_SEMAPHORE), PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, 0, 0);
9 return_value_if_fail( NULL != semaphore_ptr, TLS_TEST_UNABLE_TO_CREATE_SHARED_MEMORY);
10
11 status = sem_init( semaphore_ptr, 1, initial_value);
12 if ( -1 == status)
13 {
14 munmap( semaphore_ptr, sizeof(TLS_TEST_SEMAPHORE));
15 }
16 return_value_if_fail( -1 != status, TLS_TEST_SYSTEM_CALL_FAILED);
17
18 *semaphore_ptr_ptr = semaphore_ptr;
19 return TLS_TEST_SUCCESS;
20 }
21