Ejemplo n.º 1
0
ER
sta_cyc(ID cycid)
{
	CYCCB	*p_cyccb;
	ER		ercd;

	LOG_STA_CYC_ENTER(cycid);
	CHECK_TSKCTX_UNL();
	CHECK_CYCID(cycid);
	p_cyccb = get_cyccb(cycid);

	t_lock_cpu();
	if (p_cyccb->p_cycinib->cycatr == TA_NOEXS) {
		ercd = E_NOEXS;
	}
	else {
		if (p_cyccb->cycsta) {
			tmevtb_dequeue(&(p_cyccb->tmevtb));
		}
		else {
			p_cyccb->cycsta = true;
		}
		tmevtb_enqueue_cyc(p_cyccb, base_time + p_cyccb->p_cycinib->cycphs);
		ercd = E_OK;
	}
	t_unlock_cpu();

  error_exit:
	LOG_STA_CYC_LEAVE(ercd);
	return(ercd);
}
Ejemplo n.º 2
0
SYSCALL ER
sta_cyc(ID cycid)
{
	CYCCB	*cyccb;
	ER	ercd;

	LOG_STA_CYC_ENTER(cycid);
	CHECK_TSKCTX_UNL();
	CHECK_CYCID(cycid);
	cyccb = get_cyccb(cycid);

	t_lock_cpu();
	if (cyccb->cycsta) {
		tmevtb_dequeue(&(cyccb->tmevtb));
	}
	else {
		cyccb->cycsta = TRUE;
	}
	tmevtb_enqueue_cyc(cyccb, base_time + cyccb->cycinib->cyctim);
	ercd = E_OK;
	t_unlock_cpu();

    exit:
	LOG_STA_CYC_LEAVE(ercd);
	return(ercd);
}
Ejemplo n.º 3
0
ER
sta_cyc(ID cycid)
{
	ER ercd;
	uint_t index = INDEX_CYC(cycid);
	EVTTIM evttim;
	
	LOG_STA_CYC_ENTER(cycid);
	CHECK_TSKCTX_UNL();
	CHECK_CYCID(cycid);
	
	t_lock_cpu();
	
	if((cyccb_cycact & CYCACT_BIT(index)) != 0U) {
		time_event_dequeue(CYC_EVTID(index));
	}
	else {
		cyccb_cycact |= CYCACT_BIT(index);
	}

	evttim = current_time + cycinib_cycphs[index];
	time_event_enqueue(CYC_EVTID(index) ,
		 evttim , call_cychdr , index);
	cyccb_evttim[index] = evttim;
	
	ercd = E_OK;
	t_unlock_cpu();
	
  error_exit:
	LOG_STA_CYC_LEAVE(ercd);
	return ercd;
}