From b8639963494d7fc6075b7b8e0086f7b35194bf94 Mon Sep 17 00:00:00 2001 From: skarg Date: Tue, 10 May 2011 22:00:32 +0000 Subject: [PATCH] Added yield to lower CPU usage when no characters are arriving. --- bacnet-stack/ports/linux/dlmstp.c | 7 +++++-- bacnet-stack/ports/linux/rs485.c | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bacnet-stack/ports/linux/dlmstp.c b/bacnet-stack/ports/linux/dlmstp.c index b1489773..61d4b482 100644 --- a/bacnet-stack/ports/linux/dlmstp.c +++ b/bacnet-stack/ports/linux/dlmstp.c @@ -217,6 +217,9 @@ static void *dlmstp_master_fsm_task(void *pArg) if (MSTP_Port.ReceivedValidFrame == false && MSTP_Port.ReceivedInvalidFrame == false) { RS485_Check_UART_Data(&MSTP_Port); + if (MSTP_Port.DataAvailable == false) { + sched_yield(); + } MSTP_Receive_Frame_FSM(&MSTP_Port); } if (MSTP_Port.ReceivedValidFrame || MSTP_Port.ReceivedInvalidFrame) { @@ -241,9 +244,9 @@ static void *dlmstp_master_fsm_task(void *pArg) break; } } - if (run_master) + if (run_master) { MSTP_Master_Node_FSM(&MSTP_Port); - + } } return NULL; diff --git a/bacnet-stack/ports/linux/rs485.c b/bacnet-stack/ports/linux/rs485.c index 3a166048..96639486 100644 --- a/bacnet-stack/ports/linux/rs485.c +++ b/bacnet-stack/ports/linux/rs485.c @@ -258,7 +258,7 @@ void RS485_Check_UART_Data(volatile struct mstp_port_struct_t *mstp_port) if (mstp_port->DataAvailable == false) { /* check for data */ pthread_mutex_lock(&Reader_Mutex); - if (FIFO_Count(&Rx_FIFO) > 0) { + if (FIFO_Count(&Rx_FIFO) > 0) { mstp_port->DataRegister = FIFO_Get(&Rx_FIFO); mstp_port->DataAvailable = true; }