diff --git a/os/hal/include/hal_queues.h b/os/hal/include/hal_queues.h index 9bbe0924d..c8c664ddc 100644 --- a/os/hal/include/hal_queues.h +++ b/os/hal/include/hal_queues.h @@ -63,7 +63,7 @@ typedef void (*qnotify_t)(io_queue_t *qp); */ struct io_queue { threads_queue_t q_waiting; /**< @brief Waiting thread. */ - size_t q_counter; /**< @brief Resources counter. */ + volatile size_t q_counter; /**< @brief Resources counter. */ uint8_t *q_buffer; /**< @brief Pointer to the queue buffer.*/ uint8_t *q_top; /**< @brief Pointer to the first location after the buffer. */ diff --git a/os/rt/include/chqueues.h b/os/rt/include/chqueues.h index 2b4c660f3..e48429d14 100644 --- a/os/rt/include/chqueues.h +++ b/os/rt/include/chqueues.h @@ -76,7 +76,7 @@ typedef void (*qnotify_t)(io_queue_t *qp); */ struct io_queue { threads_queue_t q_waiting; /**< @brief Queue of waiting threads. */ - size_t q_counter; /**< @brief Resources counter. */ + volatile size_t q_counter; /**< @brief Resources counter. */ uint8_t *q_buffer; /**< @brief Pointer to the queue buffer.*/ uint8_t *q_top; /**< @brief Pointer to the first location after the buffer. */ diff --git a/readme.txt b/readme.txt index 95b503475..28f375dbc 100644 --- a/readme.txt +++ b/readme.txt @@ -102,6 +102,8 @@ - HAL: Introduced support for TIM21 and TIM22 in STM32 ST driver. - HAL: Updated STM32F0xx headers to STM32CubeF0 version 1.3.0. Added support for STM32F030xC, STM32F070x6, STM32F070xB devices. +- HAL: Fixed volatile variable issue in I/O queues, both RT and HAL (bug #640) + (backported to 3.0.2). - HAL: Fixed wrong DMA assignment for I2C1 in STM32F302xC registry (bug #637) (backported to 3.0.2). - HAL: Fixed missing timers 5, 6, 7, 10 & 11 from STM32L1 HAL port (bug #636)