dol: initial dol commit
[jump.git] / dol / src / dol / visitor / cell / lib / ppu / Fifo.h
1 #ifndef _FIFO_H_
2 #define _FIFO_H_
3
4 #include <stdio.h>
5 #include <string.h>
6
7 #include "../constant.h"
8
9 #include "../lib/malloc_align.h"
10 #include "../lib/free_align.h"
11
12 /** 
13  * FIFO Class: For remarks see SPE
14  */
15 class Fifo {
16     public:
17         Fifo(unsigned size);
18         virtual ~Fifo();
19
20         virtual unsigned read(void *destination, unsigned len);
21         virtual unsigned write(const void *source, unsigned len);
22         
23                 virtual unsigned used() const;
24         virtual unsigned unused() const;
25         virtual unsigned size() const;
26         
27         virtual char *getQueuePointer();
28         virtual void dmaRead(unsigned len);
29         virtual unsigned dmaStart();
30         virtual bool dmaAllowed();
31
32         unsigned _inTail;
33
34     protected:
35         char *_buffer;
36         
37                 unsigned _tail;
38         unsigned _pos; 
39         unsigned _size;
40         
41         unsigned _blocked; 
42         bool _activeDMA;
43 };
44
45 #endif