summaryrefslogtreecommitdiff
path: root/zephyr/modusocket.c
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-05-16 13:43:06 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-05-16 13:43:06 +0300
commita3008e447c2fb6ec564f5d0232b0b8aad4980cc4 (patch)
treeee1a311e4719c27435df940854861daf207278bf /zephyr/modusocket.c
parent88c51c3592edc6c29fb0aad57c91e535793aa31b (diff)
zephyr/modusocket: First step to switch to alternative FIFO processing.
Here we wait for non-empty FIFO, and then directly access/drop its head element.
Diffstat (limited to 'zephyr/modusocket.c')
-rw-r--r--zephyr/modusocket.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/zephyr/modusocket.c b/zephyr/modusocket.c
index aa638d413..37dfab638 100644
--- a/zephyr/modusocket.c
+++ b/zephyr/modusocket.c
@@ -399,12 +399,14 @@ STATIC mp_uint_t sock_read(mp_obj_t self_in, void *buf, mp_uint_t max_len, int *
}
DEBUG_printf("TCP recv: no cur_pkt, getting\n");
- struct net_pkt *pkt = k_fifo_get(&socket->recv_q, K_FOREVER);
-
+ _k_fifo_wait_non_empty(&socket->recv_q, K_FOREVER);
+ struct net_pkt *pkt = _k_fifo_peek_head(&socket->recv_q);
if (pkt == NULL) {
DEBUG_printf("TCP recv: NULL return from fifo\n");
continue;
}
+ // Drop head packet from queue
+ k_fifo_get(&socket->recv_q, K_NO_WAIT);
DEBUG_printf("TCP recv: new cur_pkt: %p\n", pkt);
socket->cur_pkt = pkt;