dol: initial dol commit
[jump.git] / dol / src / dol / visitor / cell / lib / ppu / Fifo.h
diff --git a/dol/src/dol/visitor/cell/lib/ppu/Fifo.h b/dol/src/dol/visitor/cell/lib/ppu/Fifo.h
new file mode 100644 (file)
index 0000000..8a06087
--- /dev/null
@@ -0,0 +1,45 @@
+#ifndef _FIFO_H_
+#define _FIFO_H_
+
+#include <stdio.h>
+#include <string.h>
+
+#include "../constant.h"
+
+#include "../lib/malloc_align.h"
+#include "../lib/free_align.h"
+
+/** 
+ * FIFO Class: For remarks see SPE
+ */
+class Fifo {
+    public:
+        Fifo(unsigned size);
+        virtual ~Fifo();
+
+        virtual unsigned read(void *destination, unsigned len);
+        virtual unsigned write(const void *source, unsigned len);
+        
+               virtual unsigned used() const;
+        virtual unsigned unused() const;
+        virtual unsigned size() const;
+        
+        virtual char *getQueuePointer();
+        virtual void dmaRead(unsigned len);
+        virtual unsigned dmaStart();
+        virtual bool dmaAllowed();
+
+        unsigned _inTail;
+
+    protected:
+        char *_buffer;
+        
+               unsigned _tail;
+        unsigned _pos; 
+        unsigned _size;
+        
+        unsigned _blocked; 
+        bool _activeDMA;
+};
+
+#endif