/* * Create high-speed lock */ EXPORT ER CreateULock( FastULock *lock, CONST UB *name ) { T_CSEM csem; ER ercd; if ( name == NULL ) { csem.exinf = NULL; } else { strncpy((char*)&csem.exinf, (char*)name, sizeof(csem.exinf)); } csem.sematr = TA_TPRI | TA_NODISWAI; #if USE_ATOMIC_INT csem.isemcnt = 0; #else csem.isemcnt = 1; #endif csem.maxsem = 1; ercd = tk_cre_sem(&csem); if ( ercd < E_OK ) { return ercd; } lock->id = ercd; lock->cnt = (UINT)-1; return E_OK; }
void net_test(void) { T_CSEM csem; T_CTSK ctsk; printf(" == net test == \n"); net_conf(NET_CONF_EMULATOR, NET_CONF_DHCP); net_show(); csem.maxsem = 100; csem.isemcnt = 0; csem.sematr = TA_TFIFO | TA_FIRST; semid = tk_cre_sem(&csem); semid2 = tk_cre_sem(&csem); bzero(&ctsk, sizeof ctsk); ctsk.tskatr = TA_HLNG | TA_RNG0; ctsk.task = server_task; ctsk.itskpri = 100; ctsk.stksz = 32 * 1024 * 2; server_tskid = tk_cre_tsk(&ctsk); DEBUG_PRINT(("start server task %d\n", server_tskid)); tk_sta_tsk(server_tskid, 0); DEBUG_PRINT(("wait server semaphore\n")); tk_wai_sem(semid, 1, TMO_FEVR); bzero(&ctsk, sizeof ctsk); ctsk.tskatr = TA_HLNG | TA_RNG0; ctsk.task = client_task; ctsk.itskpri = 101; ctsk.stksz = 4 * 1024 * 2; client_tskid = tk_cre_tsk(&ctsk); DEBUG_PRINT(("start client task %d\n", client_tskid)); tk_sta_tsk(client_tskid, 0); DEBUG_PRINT(("waiting for server and client semaphore\n")); tk_wai_sem(semid, 2, TMO_FEVR); printf(" == net test end == \n"); tk_del_sem(semid); tk_del_sem(semid2); }
int InitMutex(wolfSSL_Mutex* m) { int iReturn; m->sem.sematr = TA_TFIFO ; m->sem.isemcnt = 1 ; m->sem.maxsem = 1 ; m->id = tk_cre_sem(&m->sem); if( m->id != NULL ) iReturn = 0; else iReturn = BAD_MUTEX_E; return iReturn; }
LOCAL int init_semaphore( __volatile krwlock_t *rw ) { T_CSEM csem; SetOBJNAME(csem.exinf, "Nrw"); csem.sematr = TA_TFIFO | TA_FIRST; csem.isemcnt = MAX_READERS; csem.maxsem = MAX_READERS; rw->semid = tk_cre_sem(&csem); rw->oldspl = -1; if ( rw->semid < E_OK ) { return ENOMEM; } rw->is_writer = 0; return 0; }
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; }
/* * Create high-speed lock */ EXPORT ER CreateLock( FastLock *lock, CONST UB *name ) { T_CSEM csem; ER ercd; if ( name == NULL ) { csem.exinf = NULL; } else { STRNCPY((char*)&csem.exinf, (char*)name, sizeof(csem.exinf)); } csem.sematr = TA_TPRI | TA_NODISWAI; csem.isemcnt = 0; csem.maxsem = 1; ercd = tk_cre_sem(&csem); if ( ercd < E_OK ) { return ercd; } lock->id = ercd; lock->cnt = -1; return E_OK; }