aboutsummaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2009-05-01 16:06:12 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2009-05-01 16:06:12 +0000
commit521443e16740cdf9e550425cffbb4e6c53b98cfd (patch)
tree9161e2e19fecd3e4f142d2964d3276fb9fabe67b /src/include
parent0d7787542b2754010de8b4d0419f3b7ab85422f6 (diff)
downloadChibiOS-521443e16740cdf9e550425cffbb4e6c53b98cfd.tar.gz
ChibiOS-521443e16740cdf9e550425cffbb4e6c53b98cfd.tar.bz2
ChibiOS-521443e16740cdf9e550425cffbb4e6c53b98cfd.zip
Adjustments on queues.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@929 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'src/include')
-rw-r--r--src/include/queues.h37
1 files changed, 17 insertions, 20 deletions
diff --git a/src/include/queues.h b/src/include/queues.h
index ca587d388..e031a39f3 100644
--- a/src/include/queues.h
+++ b/src/include/queues.h
@@ -90,17 +90,13 @@ typedef GenericQueue InputQueue;
/** Evaluates to @p TRUE if the specified Input Queue is full. */
#define chIQIsFull(q) (chQSpace(q) >= chQSize(q))
-/**
- * @brief Input queue read.
- * @details This function reads a byte value from an input queue. If the queue
- * is empty then the calling thread is suspended until a byte arrives
- * in the queue.
- *
- * @param[in] iqp pointer to an @p InputQueue structure
- * @return A byte value from the queue or:
- * @retval Q_RESET if the queue was reset.
+#if CH_USE_SEMAPHORES_TIMEOUT
+/*
+ * When semaphores timeout is available this API is implemented as a
+ * special case of the more general chIQGetTimeout().
*/
#define chIQGet(iqp) chIQGetTimeout(iqp, TIME_INFINITE)
+#endif
/**
* @brief Output queue structure.
@@ -120,19 +116,13 @@ typedef GenericQueue OutputQueue;
/** Evaluates to @p TRUE if the specified Output Queue is full. */
#define chOQIsFull(q) (chQSpace(q) <= 0)
-/**
- * @brief Output queue write.
- * @details This function writes a byte value to an output queue. If the queue
- * is full then the calling thread is suspended until there is space
- * in the queue.
- *
- * @param[in] oqp pointer to an @p OutputQueue structure
- * @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.
+#if CH_USE_SEMAPHORES_TIMEOUT
+/*
+ * When semaphores timeout is available this API is implemented as a
+ * special case of the more general chOQPutTimeout().
*/
#define chOQPut(oqp, b) chOQPutTimeout(oqp, b, TIME_INFINITE)
+#endif
#ifdef __cplusplus
extern "C" {
@@ -140,10 +130,17 @@ extern "C" {
void chIQInit(InputQueue *qp, uint8_t *buffer, size_t size, qnotify_t inotify);
void chIQResetI(InputQueue *qp);
msg_t chIQPutI(InputQueue *qp, uint8_t b);
+#if !CH_USE_SEMAPHORES_TIMEOUT
+ msg_t chIQGet(InputQueue *qp);
+#endif
msg_t chIQGetTimeout(InputQueue *qp, systime_t timeout);
size_t chIQRead(InputQueue *qp, uint8_t *buffer, size_t n);
+
void chOQInit(OutputQueue *queue, uint8_t *buffer, size_t size, qnotify_t onotify);
void chOQResetI(OutputQueue *queue);
+#if !CH_USE_SEMAPHORES_TIMEOUT
+ msg_t chOQPut(OutputQueue *queue, uint8_t b);
+#endif
msg_t chOQPutTimeout(OutputQueue *queue, uint8_t b, systime_t timeout);
msg_t chOQGetI(OutputQueue *queue);
size_t chOQWrite(OutputQueue *queue, uint8_t *buffer, size_t n);