Ejemplo n.º 1
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);
}
Ejemplo n.º 2
0
/*
 * syslog initialization
 */
EXPORT ER initialize_syslog( void )
{
#if USE_SYSLOG_CONSIO
	T_CMBF	cmbf;
	T_CTSK	ctsk;
	ID	tskid;
	ER	ercd;

	/* Generate message buffer */
	SetOBJNAME(cmbf.exinf, OBJNAME_SYSLOG);
	cmbf.mbfatr = TA_TFIFO | TA_NODISWAI;
	cmbf.bufsz  = MBF_LOG_BUFSZ;
	cmbf.maxmsz = MBF_LOG_MAXMSZ;
	ercd = tk_cre_mbf(&cmbf);
	if ( ercd < E_OK ) {
		goto err_ret1;
	}
	log_mbfid = ercd;

	/* Temporarily lower the local task priority 
	   so that the system log task executes initialization sequence. */
	tk_chg_pri(TSK_SELF, 10);

	/* Start log task */
	SetOBJNAME(ctsk.exinf, OBJNAME_SYSLOG);
	ctsk.tskatr  = TA_HLNG | TA_RNG0;
	ctsk.task    = log_task;
	ctsk.itskpri = 6;
	ctsk.stksz   = 512;
	ercd = tk_cre_tsk(&ctsk);
	if ( ercd < E_OK ) {
		goto err_ret1;
	}
	tskid = ercd;
	ercd = tk_sta_tsk(tskid, CONSOLE_PORT);
	if ( ercd < E_OK ) {
		goto err_ret2;
	}

	/* Return local task priority */
	tk_chg_pri(TSK_SELF, TPRI_INI);

	return E_OK;

err_ret2:
	tk_del_tsk(tskid);
err_ret1:
	DEBUG_PRINT(("initialize_syslog ercd = %d\n", ercd));
	return ercd;
#else
	return E_OK;
#endif
}
/* |------------------+-------------------------------------------------------------| */
StatusType ChainTask ( TaskType xTaskID )
{
	StatusType ercd;
#ifdef DORMANT_STACK_SIZE
	/* To avoid destroying stack used in 'knl_make_dormant',
	   allocate the dummy area on the stack. */
	volatile VB _dummy[DORMANT_STACK_SIZE];
#endif

	/* Check context error */
#if CHK_CTX2
	if ( in_indp() ) {
#if USE_KERNEL_MESSAGE
		tm_putstring((UB*)"ChainTask was called in the task independent\n");
#endif
		tm_monitor(); /* To monitor */
	}
#endif
#if CHK_CTX1
	if ( in_ddsp() ) {
#if USE_KERNEL_MESSAGE
		tm_putstring((UB*)"ChainTask was called in the dispatch disabled\n");
#endif
	}
#endif

	DISABLE_INTERRUPT;
	ercd = tk_sta_tsk(xTaskID,xTaskID);
	if(ercd < E_OK)
	{
		ENABLE_INTERRUPT;
		return ercd;
	}
	knl_ter_tsk(knl_ctxtsk);
	knl_make_dormant(knl_ctxtsk);

	OsekStartHighReadyTask();
	/* No return */

#ifdef DORMANT_STACK_SIZE
	/* for WARNING */
	_dummy[0] = 0;
#endif
}
Ejemplo n.º 4
0
/*
        create & start task
*/
EXPORT	INT	kpCreTask(W name, FP entry)
{
	T_CTSK	ctsk;
	ID	tskid;
	INT	er;

        /* task creation */
	ctsk.exinf = (void*)name;
	ctsk.task = entry;
	ctsk.itskpri = TaskPri;
	ctsk.stksz = TASK_STKSZ;
	ctsk.tskatr = TA_HLNG | TA_RNG0;

	tskid = er = tk_cre_tsk(&ctsk);
	if (er >= E_OK) {	/* start task */
		er = tk_sta_tsk(tskid, 0);
		if (er < E_OK) tk_del_tsk(tskid);
	}
	return (er >= E_OK) ? tskid : er;
}
/* |------------------+------------------------------------------------------------| */
StatusType ActivateTask ( TaskType xTaskID )
{
	StatusType ercd = E_OK;
	ercd=tk_sta_tsk(xTaskID,/*stacd*/xTaskID);
	return ercd;
}