X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=mware%2Ffifobuf.h;h=2b749d8fe1c748b275b4ef64d21d7817d2ceb4a1;hb=4309f8e147e1a4741beb0a0b1933e63218bd89ca;hp=a9b1d6bbf05ba7eff2b9a0d84e1df772185d998a;hpb=be9ac9393488e2405363686f4ba61b84006cb1ad;p=bertos.git diff --git a/mware/fifobuf.h b/mware/fifobuf.h index a9b1d6bb..2b749d8f 100755 --- a/mware/fifobuf.h +++ b/mware/fifobuf.h @@ -1,9 +1,9 @@ -/*! +/** * \file * * * \version $Id$ @@ -43,6 +43,24 @@ /*#* *#* $Log$ + *#* Revision 1.22 2006/07/19 12:56:27 bernie + *#* Convert to new Doxygen style. + *#* + *#* Revision 1.21 2005/11/04 16:20:02 bernie + *#* Fix reference to README.devlib in header. + *#* + *#* Revision 1.20 2005/04/11 19:10:28 bernie + *#* Include top-level headers from cfg/ subdir. + *#* + *#* Revision 1.19 2004/12/08 08:30:12 bernie + *#* Add missing header. + *#* + *#* Revision 1.18 2004/11/16 21:55:12 bernie + *#* Workaround for a known fifobuf bug. + *#* + *#* Revision 1.17 2004/09/14 20:57:00 bernie + *#* Use debug.h instead of kdebug.h. + *#* *#* Revision 1.16 2004/09/06 21:39:08 bernie *#* Simplify code using ATOMIC(). *#* @@ -87,8 +105,8 @@ #ifndef MWARE_FIFO_H #define MWARE_FIFO_H -#include -#include +#include +#include typedef struct FIFOBuffer { @@ -108,7 +126,7 @@ typedef struct FIFOBuffer ) -/*! +/** * Check whether the fifo is empty * * \note Calling fifo_isempty() is safe while a concurrent @@ -125,7 +143,7 @@ INLINE bool fifo_isempty(const FIFOBuffer *fb) } -/*! +/** * Check whether the fifo is full * * \note Calling fifo_isfull() is safe while a concurrent @@ -147,7 +165,7 @@ INLINE bool fifo_isfull(const FIFOBuffer *fb) } -/*! +/** * Pop a character from the fifo buffer. * * \note Calling \c fifo_push() on a full buffer is undefined. @@ -180,7 +198,7 @@ INLINE void fifo_push(FIFOBuffer *fb, unsigned char c) } -/*! +/** * Pop a character from the fifo buffer. * * \note Calling \c fifo_pop() on an empty buffer is undefined. @@ -209,7 +227,7 @@ INLINE unsigned char fifo_pop(FIFOBuffer *fb) } -/*! +/** * Make the fifo empty, discarding all its current contents. */ INLINE void fifo_flush(FIFOBuffer *fb) @@ -232,7 +250,7 @@ INLINE void fifo_flush(FIFOBuffer *fb) #else /* CPU_REG_BITS < CPU_BITS_PER_PTR */ - /*! + /** * Similar to fifo_isempty(), but with stronger guarantees for * concurrent access between user and interrupt code. * @@ -248,7 +266,7 @@ INLINE void fifo_flush(FIFOBuffer *fb) } - /*! + /** * Similar to fifo_push(), but with stronger guarantees for * concurrent access between user and interrupt code. * @@ -269,7 +287,7 @@ INLINE void fifo_flush(FIFOBuffer *fb) return c; } - /*! + /** * Similar to fifo_flush(), but with stronger guarantees for * concurrent access between user and interrupt code. * @@ -285,7 +303,7 @@ INLINE void fifo_flush(FIFOBuffer *fb) #endif /* CPU_REG_BITS < BITS_PER_PTR */ -/*! +/** * Thread safe version of fifo_isfull() */ INLINE bool fifo_isfull_locked(const FIFOBuffer *_fb) @@ -296,11 +314,14 @@ INLINE bool fifo_isfull_locked(const FIFOBuffer *_fb) } -/*! +/** * FIFO Initialization. */ INLINE void fifo_init(FIFOBuffer *fb, unsigned char *buf, size_t size) { + /* FIFO buffers have a known bug with 1-byte buffers. */ + ASSERT(size > 1); + fb->head = fb->tail = fb->begin = buf; fb->end = buf + size - 1; }