76 |
|
|
77 |
__inline int read (T *dest, int cnt); |
__inline int read (T *dest, int cnt); |
78 |
__inline int write (T *src, int cnt); |
__inline int write (T *src, int cnt); |
79 |
|
|
80 |
|
inline int push(T* src) { return write(src,1); } |
81 |
|
inline int pop(T* dst) { return read(dst,1); } |
82 |
|
|
83 |
__inline T *get_buffer_begin(); |
__inline T *get_buffer_begin(); |
84 |
|
|
85 |
__inline T *get_read_ptr(void) { |
__inline T *get_read_ptr(void) { |
86 |
return(&buf[atomic_read(&read_ptr)]); |
return(&buf[atomic_read(&read_ptr)]); |
87 |
} |
} |
88 |
|
|
89 |
|
/** |
90 |
|
* Returns a pointer to the element from the current read position, |
91 |
|
* advanced by \a offset elements. |
92 |
|
*/ |
93 |
|
/*inline T* get_read_ptr(int offset) { |
94 |
|
int r = atomic_read(&read_ptr); |
95 |
|
r += offset; |
96 |
|
r &= size_mask; |
97 |
|
return &buf[r]; |
98 |
|
}*/ |
99 |
|
|
100 |
__inline T *get_write_ptr(); |
__inline T *get_write_ptr(); |
101 |
__inline void increment_read_ptr(int cnt) { |
__inline void increment_read_ptr(int cnt) { |
102 |
atomic_set(&read_ptr , (atomic_read(&read_ptr) + cnt) & size_mask); |
atomic_set(&read_ptr , (atomic_read(&read_ptr) + cnt) & size_mask); |