X-Git-Url: http://sraa.de/git/?a=blobdiff_plain;f=dol%2Fsrc%2Fdol%2Fvisitor%2Fhds%2Flib%2FWindowedFifo.h;fp=dol%2Fsrc%2Fdol%2Fvisitor%2Fhds%2Flib%2FWindowedFifo.h;h=a223c950b3d6aba2bf3a6526187b233d2fd5a6ee;hb=8c411cf24ed0eb889191aaeafd8fa1e69081df42;hp=0000000000000000000000000000000000000000;hpb=dea7a4fb1ed110d3ce6e6d9255103d724bd66c0e;p=jump.git diff --git a/dol/src/dol/visitor/hds/lib/WindowedFifo.h b/dol/src/dol/visitor/hds/lib/WindowedFifo.h new file mode 100644 index 0000000..a223c95 --- /dev/null +++ b/dol/src/dol/visitor/hds/lib/WindowedFifo.h @@ -0,0 +1,40 @@ +#ifndef _WINDOWEDFIFO_H_ +#define _WINDOWEDFIFO_H_ + +#include "systemc.h" + +class WindowedFifo { + public: + WindowedFifo(char* name, unsigned size); + virtual ~WindowedFifo(); + + virtual unsigned reserve(void** destination, unsigned len); + virtual void release(); + + virtual unsigned capture(void** destination, unsigned len); + virtual void consume(); + + virtual unsigned used() const; + virtual unsigned unused() const; + virtual unsigned size() const; + virtual char* getName() const; + + protected: + char *_buffer; + unsigned _head; + unsigned _tail; + unsigned _headRoom; + unsigned _tailRoom; + unsigned _size; + unsigned _use; + unsigned _writeReserve; + unsigned _readReserve; + //bool _isFull; + bool _isHeadReserved; + bool _isTailReserved; + char *_name; + sc_event _readEvent; + sc_event _writeEvent; +}; + +#endif