示例#1
0
/*
 * 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;
}
示例#2
0
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);
}
示例#3
0
        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;
        }
示例#4
0
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;
}
示例#5
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;
}
示例#6
0
/*
 * 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;
}