dol: initial dol commit
[jump.git] / dol / src / dol / visitor / cell / lib / spu / 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 class Fifo {
13     public:
14         Fifo(unsigned size);
15         virtual ~Fifo();
16
17                 // Read / Write
18         virtual unsigned read(void *destination, unsigned len);
19         virtual unsigned write(const void *source, unsigned len);
20         
21                 // Buffer functions
22                 virtual unsigned used() const;
23         virtual unsigned unused() const;
24         virtual unsigned size() const;
25         
26                 // DMA functions
27         virtual char *getQueuePointer();
28         virtual void dmaRead(unsigned len);
29         virtual unsigned dmaStart();
30         virtual bool dmaAllowed();
31                                 
32             // Global Variables
33         unsigned _inTail;
34
35     protected:
36         char *_buffer;         // Buffer pointer
37
38         unsigned _tail;        // Pointer to the tail
39         
40                 unsigned _pos;         // Amount used
41         unsigned _size;        // Size of the buffer
42         
43                 unsigned _blocked;     // Number of blocking necessary
44         bool _activeDMA;       // Active DMA?
45 };
46
47 #endif