Rename BITS_PER_PTR to CPU_BITS_PER_PTR.
[bertos.git] / mware / fifobuf.h
index 8da90c20dfa155dbf2af4ea95b175ed41844ab3f..d1885a400a0431fd9119888a9b0763c0066d4dcb 100755 (executable)
  *             \code head == begin && tail == end \endcode
  */
 
-/*
- * $Log$
- * Revision 1.9  2004/07/20 23:54:27  bernie
- * fifo_flush_locked(): New function;
- * Revamp documentation.
- *
- * Revision 1.8  2004/07/20 23:47:39  bernie
- * Finally remove redundant protos.
- *
- * Revision 1.7  2004/07/20 23:46:29  bernie
- * Finally remove redundant protos.
- *
- * Revision 1.6  2004/06/06 17:18:04  bernie
- * Remove redundant declaration of fifo_isempty_locked().
- *
- * Revision 1.5  2004/06/06 16:50:35  bernie
- * Import fixes for race conditions from project_ks.
- *
- * Revision 1.4  2004/06/06 16:11:17  bernie
- * Protect MetroWerks specific pragmas with #ifdef's
- */
+/*#*
+ *#* $Log$
+ *#* Revision 1.15  2004/08/29 22:05:16  bernie
+ *#* Rename BITS_PER_PTR to CPU_BITS_PER_PTR.
+ *#*
+ *#* Revision 1.14  2004/08/25 14:12:09  rasky
+ *#* Aggiornato il comment block dei log RCS
+ *#*
+ *#* Revision 1.13  2004/08/24 13:16:11  bernie
+ *#* Add type-size definitions for preprocessor.
+ *#*
+ *#* Revision 1.12  2004/08/02 20:20:29  aleph
+ *#* Merge from project_ks
+ *#*
+ *#* Revision 1.11  2004/07/30 14:15:53  rasky
+ *#* Nuovo supporto unificato per detect della CPU
+ *#*
+ *#* Revision 1.10  2004/07/29 22:57:09  bernie
+ *#* Doxygen fix.
+ *#*
+ *#* Revision 1.9  2004/07/20 23:54:27  bernie
+ *#* fifo_flush_locked(): New function;
+ *#* Revamp documentation.
+ *#*
+ *#* Revision 1.8  2004/07/20 23:47:39  bernie
+ *#* Finally remove redundant protos.
+ *#*
+ *#* Revision 1.7  2004/07/20 23:46:29  bernie
+ *#* Finally remove redundant protos.
+ *#*
+ *#* Revision 1.6  2004/06/06 17:18:04  bernie
+ *#* Remove redundant declaration of fifo_isempty_locked().
+ *#*
+ *#* Revision 1.5  2004/06/06 16:50:35  bernie
+ *#* Import fixes for race conditions from project_ks.
+ *#*
+ *#* Revision 1.4  2004/06/06 16:11:17  bernie
+ *#* Protect MetroWerks specific pragmas with #ifdef's
+ *#*/
 
 #ifndef MWARE_FIFO_H
 #define MWARE_FIFO_H
@@ -181,19 +199,23 @@ INLINE void fifo_flush(FIFOBuffer *fb)
 }
 
 
-#if !defined(__AVR__)
+#if CPU_REG_BITS >= CPU_BITS_PER_PTR
 
-       /* No tricks needed on 16/32bit CPUs */
-#      define fifo_isempty_locked(fb) fifo_isempty((fb))
-#      define fifo_push_locked(fb, c) fifo_push((fb), (c))
-#      define fifo_flush_locked(fb, c) fifo_flush((fb), (c))
+       /*
+        * 16/32bit CPUs that can update a pointer with a single write
+        * operation, no need to disable interrupts.
+        */
+       #define fifo_isempty_locked(fb) fifo_isempty((fb))
+       #define fifo_push_locked(fb, c) fifo_push((fb), (c))
+       #define fifo_flush_locked(fb) fifo_flush((fb))
 
-#else /* !__AVR__ */
+#else /* CPU_REG_BITS < CPU_BITS_PER_PTR */
 
        /*!
         * Similar to fifo_isempty(), but with stronger guarantees for
         * concurrent access between user and interrupt code.
-        * This is actually only needed for 8-bit processors.
+        *
+        * \note This is actually only needed for 8-bit processors.
         *
         * \sa fifo_isempty()
         */
@@ -209,6 +231,7 @@ INLINE void fifo_flush(FIFOBuffer *fb)
                return result;
        }
 
+
        /*!
         * Similar to fifo_push(), but with stronger guarantees for
         * concurrent access between user and interrupt code.
@@ -225,6 +248,7 @@ INLINE void fifo_flush(FIFOBuffer *fb)
                ENABLE_IRQRESTORE(flags);
        }
 
+
        /*!
         * Similar to fifo_flush(), but with stronger guarantees for
         * concurrent access between user and interrupt code.
@@ -241,7 +265,7 @@ INLINE void fifo_flush(FIFOBuffer *fb)
                ENABLE_IRQRESTORE(flags);
        }
 
-#endif /* !__AVR__ */
+#endif /* CPU_REG_BITS < BITS_PER_PTR */
 
 
 /*!