MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / _serial_rx_flush

Function _serial_rx_flush

components/drivers/serial/dev_serial_v2.c:1235–1263  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1233
1234
1235static void _serial_rx_flush(struct rt_serial_device *serial)
1236{
1237 rt_base_t level;
1238 struct rt_serial_rx_fifo *rx_fifo;
1239 RT_ASSERT(serial != RT_NULL);
1240
1241 if (serial->config.rx_bufsz == 0)
1242 {
1243 rt_uint32_t rx_flush_limit = 0xFFFFFFF;
1244 while (serial->ops->getc(serial) != -1 && rx_flush_limit > 0)
1245 {
1246 rx_flush_limit--;
1247 }
1248 }
1249 else
1250 {
1251 rx_fifo = (struct rt_serial_rx_fifo *)serial->serial_rx;
1252 RT_ASSERT(rx_fifo != RT_NULL);
1253
1254 level = rt_spin_lock_irqsave(&serial->spinlock);
1255 rt_completion_wait(&rx_fifo->rx_cpt, 0);
1256 rt_ringbuffer_reset(&rx_fifo->rb);
1257 rx_fifo->rx_cpt_index = 0;
1258#ifdef RT_SERIAL_USING_DMA
1259 rt_serial_update_read_index(&rx_fifo->dma_ping_rb, rt_ringbuffer_get_size(&rx_fifo->dma_ping_rb));
1260#endif
1261 rt_spin_unlock_irqrestore(&serial->spinlock, level);
1262 }
1263}
1264
1265static void _serial_tx_flush(struct rt_serial_device *serial)
1266{

Callers 2

_tc_flushFunction · 0.85
rt_serial_controlFunction · 0.85

Calls 5

rt_completion_waitFunction · 0.85
rt_ringbuffer_resetFunction · 0.85
rt_spin_lock_irqsaveFunction · 0.50

Tested by

no test coverage detected