Fixed bug 3149141, documentation improvements to the queues, updated pre-2.2.0 plan in todo.txt.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2562 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
gdisirio 2011-01-01 11:48:59 +00:00
parent c37c790722
commit a9dacc80cb
3 changed files with 68 additions and 27 deletions

View File

@ -52,7 +52,7 @@ typedef void (*qnotify_t)(void);
#define Q_FULL -4
/**
* @brief Generic I/O queue structure.
* @brief Type of a generic I/O queue structure.
* @details This structure represents a generic Input or Output asymmetrical
* queue. The queue is asymmetrical because one end is meant to be
* accessed from a thread context, and thus can be blocking, the other
@ -73,27 +73,33 @@ typedef struct {
/**
* @brief Returns the queue's buffer size.
*
* @iclass
*/
#define chQSizeI(q) ((q)->q_top - (q)->q_buffer)
/**
* @brief Queue space.
* @details Returns the used space if used on an Input Queue and the empty
* space if used on an Output Queue.
* @note The returned value can be less than zero when there are waiting
* threads on the internal semaphore.
* @param[in] qp pointer to a @p GenericQueue structure.
* @return The buffer size.
*
* @iclass
*/
#define chQSpaceI(q) chSemGetCounterI(&(q)->q_sem)
#define chQSizeI(qp) ((qp)->q_top - (qp)->q_buffer)
/**
* @brief Queue space.
* @details Returns the used space if used on an input queue or the empty
* space if used on an output queue.
* @note The returned value can be less than zero when there are waiting
* threads on the internal semaphore.
*
* @param[in] qp pointer to a @p GenericQueue structure.
* @return The buffer space.
*
* @iclass
*/
#define chQSpaceI(qp) chSemGetCounterI(&(qp)->q_sem)
/**
* @extends GenericQueue
*
* @brief Input queue structure.
* @brief Type of an input queue structure.
* @details This structure represents a generic asymmetrical input queue.
* Writing in the queue is non-blocking and can be performed from
* Writing to the queue is non-blocking and can be performed from
* interrupt handlers or from within a kernel lock zone (see
* <b>I-Locked</b> and <b>S-Locked</b> states in @ref system_states).
* Reading the queue can be a blocking operation and is supposed to
@ -102,18 +108,28 @@ typedef struct {
typedef GenericQueue InputQueue;
/**
* @brief Evaluates to @p TRUE if the specified Input Queue is empty.
* @brief Evaluates to @p TRUE if the specified input queue is empty.
*
* @param[in] iqp pointer to an @p InputQueue structure.
* @return The queue status.
* @retval FALSE The queue is not empty.
* @retval TRUE The queue is empty.
*
* @iclass
*/
#define chIQIsEmptyI(q) ((bool_t)(chQSpaceI(q) <= 0))
#define chIQIsEmptyI(iqp) ((bool_t)(chQSpaceI(iqp) <= 0))
/**
* @brief Evaluates to @p TRUE if the specified Input Queue is full.
* @brief Evaluates to @p TRUE if the specified input queue is full.
*
* @param[in] iqp pointer to an @p InputQueue structure.
* @return The queue status.
* @retval FALSE The queue is not full.
* @retval TRUE The queue is full.
*
* @iclass
*/
#define chIQIsFullI(q) ((bool_t)(chQSpaceI(q) >= chQSizeI(q)))
#define chIQIsFullI(iqp) ((bool_t)(chQSpaceI(iqp) >= chQSizeI(iqp)))
/**
* @brief Input queue read.
@ -123,7 +139,7 @@ typedef GenericQueue InputQueue;
*
* @param[in] iqp pointer to an @p InputQueue structure
* @return A byte value from the queue.
* @retval Q_RESET if the queue was reset.
* @retval Q_RESET If the queue has been reset.
*
* @api
*/
@ -164,7 +180,7 @@ typedef GenericQueue InputQueue;
/**
* @extends GenericQueue
*
* @brief Output queue structure.
* @brief Type of an output queue structure.
* @details This structure represents a generic asymmetrical output queue.
* Reading from the queue is non-blocking and can be performed from
* interrupt handlers or from within a kernel lock zone (see
@ -175,14 +191,24 @@ typedef GenericQueue InputQueue;
typedef GenericQueue OutputQueue;
/**
* @brief Evaluates to @p TRUE if the specified Output Queue is empty.
* @brief Evaluates to @p TRUE if the specified output queue is empty.
*
* @param[in] oqp pointer to an @p OutputQueue structure.
* @return The queue status.
* @retval FALSE The queue is not empty.
* @retval TRUE The queue is empty.
*
* @iclass
*/
#define chOQIsEmptyI(q) ((bool_t)(chQSpaceI(q) >= chQSizeI(q)))
/**
* @brief Evaluates to @p TRUE if the specified Output Queue is full.
* @brief Evaluates to @p TRUE if the specified output queue is full.
*
* @param[in] oqp pointer to an @p OutputQueue structure.
* @return The queue status.
* @retval FALSE The queue is not full.
* @retval TRUE The queue is full.
*
* @iclass
*/
@ -198,7 +224,7 @@ typedef GenericQueue OutputQueue;
* @param[in] b the byte value to be written in the queue
* @return The operation status.
* @retval Q_OK if the operation succeeded.
* @retval Q_RESET if the queue was reset.
* @retval Q_RESET if the queue has been reset.
*
* @api
*/
@ -209,7 +235,7 @@ typedef GenericQueue OutputQueue;
* @details This macro should be used when statically initializing an
* output queue that is part of a bigger structure.
*
* @param[in] name the name of the output queue variable.
* @param[in] name the name of the output queue variable
* @param[in] buffer pointer to the queue buffer area
* @param[in] size size of the queue buffer area
* @param[in] onotify output notification callback pointer
@ -224,7 +250,7 @@ typedef GenericQueue OutputQueue;
}
/**
* @brief Static output queue initializer.
* @brief Static output queue initializer.
* @details Statically initialized output queues require no explicit
* initialization using @p chOQInit().
*
@ -234,7 +260,7 @@ typedef GenericQueue OutputQueue;
* @param[in] onotify output notification callback pointer
*/
#define OUTPUTQUEUE_DECL(name, buffer, size, onotify) \
InputQueue name = _OUTPUTQUEUE_DATA(name, buffer, size, onotify)
OutputQueue name = _OUTPUTQUEUE_DATA(name, buffer, size, onotify)
#ifdef __cplusplus
extern "C" {

View File

@ -65,6 +65,8 @@
*****************************************************************************
*** 2.1.7 ***
- FIX: Fixed error in output queues static initializer (bug 3149141)
(backported to 2.0.9).
- FIX: Fixed extra notifications in input queues (bug 3148525)(backported
to 2.0.9).
- NEW: New ARM Cortex-Mx port for RVCT compiler (probably will not be

View File

@ -59,9 +59,22 @@ N Evaluate if to add a synchronous API to the UART driver, eventually do so.
and general solutions.
X Support for more compilers (IAR, Keil, ARMCMx only initially).
X Support for not just Makefiles (Ride7, Crossworks etc).
- Make thread functions return void.
? Make thread functions return void.
- Introduce a "THREAD" function prefix in order to hide compiler-specific
optimizations for thread functions.
- Move I/O queues out of the kernel into an new "oslib" category.
- Add an I/O buffers mechanism to the oslib category.
- Move MemStreams to the oslib category.
- Move iochannels and file interfaces to the oslib category.
? Evaluate moving mailboxes to the oslib category.
- Make the oslib category appear in the general documentation and the various
kernel reference manuals.
- IAR port for Cortex-Mx, add demos for all the supported families.
- Keil port for Cortex-Mx, add demos for all the supported families.
- Add an USB abstract device driver class.
- USB driver implementation for STM32F103/STM32F102.
- Add a Serial over USB generic device driver implementing a USB Communication
Device Class and offering a Serial-like interface to the applications.
X Except for the above, bug fixing only until the 2.2.0 release.
Within 2.3.x (hopefully)