This fixes the overflow mathmatic in the fifo

This commit is contained in:
Nicholas R Dinsmore 2021-02-16 23:08:08 -05:00
parent 09868434cd
commit b7ec66e33a
3 changed files with 4 additions and 2 deletions

View File

@ -74,7 +74,7 @@ bool tu_fifo_config(tu_fifo_t *f, void* buffer, uint16_t depth, uint16_t item_si
f->overwritable = overwritable;
f->max_pointer_idx = 2*depth - 1; // Limit index space to 2*depth - this allows for a fast "modulo" calculation but limits the maximum depth to 2^16/2 = 2^15 and buffer overflows are detectable only if overflow happens once (important for unsupervised DMA applications)
f->non_used_index_space = 0xFFFF - f->max_pointer_idx;
f->non_used_index_space = UINT16_MAX - f->max_pointer_idx;
f->rd_idx = f->wr_idx = 0;

View File

@ -86,7 +86,7 @@ typedef struct
.item_size = sizeof(_type), \
.overwritable = _overwritable, \
.max_pointer_idx = 2*_depth-1, \
.non_used_index_space = 0xFFFF - 2*_depth-1, \
.non_used_index_space = UINT16_MAX - (2*_depth-1), \
}
bool tu_fifo_set_overwritable(tu_fifo_t *f, bool overwritable);

View File

@ -123,6 +123,8 @@ typedef osal_queue_def_t* osal_queue_t;
.depth = _depth, \
.item_size = sizeof(_type), \
.overwritable = false, \
.max_pointer_idx = 2*_depth-1, \
.non_used_index_space = UINT16_MAX - (2*_depth-1), \
}\
}