CgMutex *cg_mutex_new() { CgMutex *mutex; cg_log_debug_l4("Entering...\n"); mutex = (CgMutex *)malloc(sizeof(CgMutex)); if ( NULL != mutex ) { #if defined(WIN32) && !defined(ITRON) mutex->mutexID = CreateMutex(NULL, FALSE, NULL); #elif defined(BTRON) mutex->mutexID = cre_sem(1, SEM_EXCL); #elif defined(ITRON) T_CSEM csem; csem.sematr = TA_TFIFO; csem.isemcnt = 1; csem.maxsem = 1; csem.name = NULL; mutex->mutexID = acre_sem(&csem); #elif defined(TENGINE) && !defined(PROCESS_BASE) T_CSEM csem; csem.exinf = 0; csem.sematr = TA_TFIFO | TA_FIRST; csem.isemcnt = 0; csem.maxsem = 1; mutex->mutexID = tk_cre_sem(&csem); #elif defined(TENGINE) && defined(PROCESS_BASE) mutex->mutexID = b_cre_sem(1, SEM_EXCL); #else pthread_mutex_init(&mutex->mutexID, NULL); #endif } cg_log_debug_l4("Leaving...\n"); return mutex; }
int knh_mutex_init(kmutex_t *m) { #if defined(K_USING_PTHREAD) return pthread_mutex_init((pthread_mutex_t*)m, NULL); #elif defined(K_USING_BTRON) W sem = b_cre_sem(1, SEM_EXCL|DELEXIT); if (sem < 0) { return -1; } *m = sem; return 0; #elif defined(K_USED_TO_BE_ON_LKM) mutex_init((struct mutex *)m); return 0; #elif defined(K_USING_WINTHREAD_) InitializeCriticalSection(m); // TODO STATUS_NO_MEMORY return 0; #else return 0; #endif }