Lines Matching refs:tx_fifo

133     struct rt_can_tx_fifo *tx_fifo;  in _can_int_tx()  local
138 tx_fifo = (struct rt_can_tx_fifo *) can->can_tx; in _can_int_tx()
139 RT_ASSERT(tx_fifo != RT_NULL); in _can_int_tx()
148 rt_sem_take(&(tx_fifo->sem), RT_WAITING_FOREVER); in _can_int_tx()
150 tx_tosnd = rt_list_entry(tx_fifo->freelist.next, struct rt_can_sndbxinx_list, list); in _can_int_tx()
155 … no = ((rt_ubase_t)tx_tosnd - (rt_ubase_t)tx_fifo->buffer) / sizeof(struct rt_can_sndbxinx_list); in _can_int_tx()
162 rt_list_insert_before(&tx_fifo->freelist, &tx_tosnd->list); in _can_int_tx()
164 rt_sem_release(&(tx_fifo->sem)); in _can_int_tx()
172 rt_list_insert_before(&tx_fifo->freelist, &tx_tosnd->list); in _can_int_tx()
175 rt_sem_release(&(tx_fifo->sem)); in _can_int_tx()
185 rt_list_insert_before(&tx_fifo->freelist, &tx_tosnd->list); in _can_int_tx()
187 rt_sem_release(&(tx_fifo->sem)); in _can_int_tx()
217 struct rt_can_tx_fifo *tx_fifo; in _can_int_tx_priv() local
222 tx_fifo = (struct rt_can_tx_fifo *) can->can_tx; in _can_int_tx_priv()
223 RT_ASSERT(tx_fifo != RT_NULL); in _can_int_tx_priv()
234 if ((tx_fifo->buffer[no].result != RT_CAN_SND_RESULT_OK)) in _can_int_tx_priv()
238 rt_completion_wait(&(tx_fifo->buffer[no].completion), RT_WAITING_FOREVER); in _can_int_tx_priv()
241 tx_fifo->buffer[no].result = RT_CAN_SND_RESULT_WAIT; in _can_int_tx_priv()
249 if (rt_completion_wait(&(tx_fifo->buffer[no].completion), RT_CANSND_MSG_TIMEOUT) != RT_EOK) in _can_int_tx_priv()
255 result = tx_fifo->buffer[no].result; in _can_int_tx_priv()
325 struct rt_can_tx_fifo *tx_fifo; in rt_can_open() local
327 tx_fifo = (struct rt_can_tx_fifo *) rt_malloc(sizeof(struct rt_can_tx_fifo) + in rt_can_open()
329 RT_ASSERT(tx_fifo != RT_NULL); in rt_can_open()
331 tx_fifo->buffer = (struct rt_can_sndbxinx_list *)(tx_fifo + 1); in rt_can_open()
332 rt_memset(tx_fifo->buffer, 0, in rt_can_open()
334 rt_list_init(&tx_fifo->freelist); in rt_can_open()
337 rt_list_insert_before(&tx_fifo->freelist, &tx_fifo->buffer[i].list); in rt_can_open()
338 rt_completion_init(&(tx_fifo->buffer[i].completion)); in rt_can_open()
339 tx_fifo->buffer[i].result = RT_CAN_SND_RESULT_OK; in rt_can_open()
343 rt_sem_init(&(tx_fifo->sem), tmpname, can->config.sndboxnumber, RT_IPC_FLAG_FIFO); in rt_can_open()
344 can->can_tx = tx_fifo; in rt_can_open()
435 struct rt_can_tx_fifo *tx_fifo; in rt_can_close() local
440 tx_fifo = (struct rt_can_tx_fifo *)can->can_tx; in rt_can_close()
441 RT_ASSERT(tx_fifo != RT_NULL); in rt_can_close()
443 rt_sem_detach(&(tx_fifo->sem)); in rt_can_close()
444 rt_free(tx_fifo); in rt_can_close()
536 struct rt_can_tx_fifo *tx_fifo; in rt_can_control() local
540 tx_fifo = (struct rt_can_tx_fifo *) can->can_tx; in rt_can_control()
546 if(rt_list_isempty(&tx_fifo->buffer[i].list)) in rt_can_control()
548 rt_sem_release(&(tx_fifo->sem)); in rt_can_control()
552 rt_list_remove(&tx_fifo->buffer[i].list); in rt_can_control()
563 if (tx_fifo->buffer[i].result == RT_CAN_SND_RESULT_OK) in rt_can_control()
565 rt_list_insert_before(&tx_fifo->freelist, &tx_fifo->buffer[i].list); in rt_can_control()
902 struct rt_can_tx_fifo *tx_fifo; in rt_hw_can_isr() local
905 tx_fifo = (struct rt_can_tx_fifo *) can->can_tx; in rt_hw_can_isr()
906 RT_ASSERT(tx_fifo != RT_NULL); in rt_hw_can_isr()
911 tx_fifo->buffer[no].result = RT_CAN_SND_RESULT_OK; in rt_hw_can_isr()
915 tx_fifo->buffer[no].result = RT_CAN_SND_RESULT_ERR; in rt_hw_can_isr()
917 rt_completion_done(&(tx_fifo->buffer[no].completion)); in rt_hw_can_isr()