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