From e2a7981934c8eb64ccd66b1a85e1909438f156a2 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Mon, 31 Aug 2015 08:19:58 +0000 Subject: Fixed bug #640. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@8256 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/hal/include/hal_queues.h | 2 +- os/rt/include/chqueues.h | 2 +- readme.txt | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) 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) -- cgit v1.2.3