From 6d0e7c5eba49efc171e63ff2631722a5c7f95460 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Wed, 25 Sep 2024 21:00:16 +0300 Subject: technically speaking deadlock free, but starves --- src/components/uart/simple_uart.c | 54 --------------------------------------- src/components/uart/source.mk | 1 - 2 files changed, 55 deletions(-) delete mode 100644 src/components/uart/simple_uart.c delete mode 100644 src/components/uart/source.mk (limited to 'src/components/uart') diff --git a/src/components/uart/simple_uart.c b/src/components/uart/simple_uart.c deleted file mode 100644 index 1528a70..0000000 --- a/src/components/uart/simple_uart.c +++ /dev/null @@ -1,54 +0,0 @@ -#include -#include - -struct simple_uart { - struct component component; - - struct component *send; - struct packet pkt; - bool busy; -}; - -static stat simple_uart_clock(struct simple_uart *uart) -{ - if (!uart->busy) - return OK; - - stat r = SEND(uart, uart->send, uart->pkt); - if (r == EBUSY) - return OK; - - uart->busy = false; - return OK; -} - -static stat simple_uart_receive(struct simple_uart *uart, struct component *from, struct packet pkt) -{ - if (uart->busy) - return EBUSY; - - uart->busy = true; - uart->send = from; - uart->pkt = response(pkt); - - size_t size = packet_convsize(&pkt); - if (size != 1) { - set_flags(&uart->pkt, PACKET_ERROR); - return OK; - } - - putchar(packet_convu8(&pkt)); - set_flags(&uart->pkt, PACKET_DONE); - return OK; -} - -struct component *create_simple_uart() -{ - struct simple_uart *uart = calloc(1, sizeof(struct simple_uart)); - if (!uart) - return NULL; - - uart->component.receive = (receive_callback)simple_uart_receive; - uart->component.clock = (clock_callback)simple_uart_clock; - return (struct component *)uart; -} diff --git a/src/components/uart/source.mk b/src/components/uart/source.mk deleted file mode 100644 index af26289..0000000 --- a/src/components/uart/source.mk +++ /dev/null @@ -1 +0,0 @@ -SOURCES += src/components/uart/simple_uart.c -- cgit v1.3