@@ -351,7 +351,8 @@ static uint16_t backward_index(uint16_t depth, uint16_t idx, uint16_t offset)
351
351
}
352
352
353
353
// index to pointer, simply an modulo with minus.
354
- static inline uint16_t idx2ptr (uint16_t idx , uint16_t depth )
354
+ TU_ATTR_ALWAYS_INLINE static inline
355
+ uint16_t idx2ptr (uint16_t depth , uint16_t idx )
355
356
{
356
357
// Only run at most 3 times since index is limit in the range of [0..2*depth)
357
358
while ( idx >= depth ) idx -= depth ;
@@ -415,7 +416,7 @@ static bool _tu_fifo_peek(tu_fifo_t* f, void * p_buffer, uint16_t wr_idx, uint16
415
416
// Skip beginning of buffer
416
417
if (cnt == 0 ) return false;
417
418
418
- uint16_t rd_ptr = idx2ptr (rd_idx , f -> depth );
419
+ uint16_t rd_ptr = idx2ptr (f -> depth , rd_idx );
419
420
420
421
// Peek data
421
422
_ff_pull (f , p_buffer , rd_ptr );
@@ -443,7 +444,7 @@ static uint16_t _tu_fifo_peek_n(tu_fifo_t* f, void * p_buffer, uint16_t n, uint1
443
444
// Check if we can read something at and after offset - if too less is available we read what remains
444
445
if (cnt < n ) n = cnt ;
445
446
446
- uint16_t rd_ptr = idx2ptr (rd_idx , f -> depth );
447
+ uint16_t rd_ptr = idx2ptr (f -> depth , rd_idx );
447
448
448
449
// Peek data
449
450
_ff_pull_n (f , p_buffer , n , rd_ptr , copy_mode );
@@ -520,7 +521,7 @@ static uint16_t _tu_fifo_write_n(tu_fifo_t* f, const void * data, uint16_t n, tu
520
521
521
522
if (n )
522
523
{
523
- uint16_t wr_ptr = idx2ptr (wr_idx , f -> depth );
524
+ uint16_t wr_ptr = idx2ptr (f -> depth , wr_idx );
524
525
525
526
TU_LOG (TU_FIFO_DBG , "actual_n = %u, wr_ptr = %u" , n , wr_ptr );
526
527
@@ -794,7 +795,7 @@ bool tu_fifo_write(tu_fifo_t* f, const void * data)
794
795
ret = false;
795
796
}else
796
797
{
797
- uint16_t wr_ptr = idx2ptr (wr_idx , f -> depth );
798
+ uint16_t wr_ptr = idx2ptr (f -> depth , wr_idx );
798
799
799
800
// Write data
800
801
_ff_push (f , data , wr_ptr );
@@ -980,8 +981,8 @@ void tu_fifo_get_read_info(tu_fifo_t *f, tu_fifo_buffer_info_t *info)
980
981
}
981
982
982
983
// Get relative pointers
983
- uint16_t wr_ptr = idx2ptr (wr_idx , f -> depth );
984
- uint16_t rd_ptr = idx2ptr (rd_idx , f -> depth );
984
+ uint16_t wr_ptr = idx2ptr (f -> depth , wr_idx );
985
+ uint16_t rd_ptr = idx2ptr (f -> depth , rd_idx );
985
986
986
987
// Copy pointer to buffer to start reading from
987
988
info -> ptr_lin = & f -> buffer [rd_ptr ];
@@ -1034,8 +1035,8 @@ void tu_fifo_get_write_info(tu_fifo_t *f, tu_fifo_buffer_info_t *info)
1034
1035
}
1035
1036
1036
1037
// Get relative pointers
1037
- uint16_t wr_ptr = idx2ptr (wr_idx , f -> depth );
1038
- uint16_t rd_ptr = idx2ptr (rd_idx , f -> depth );
1038
+ uint16_t wr_ptr = idx2ptr (f -> depth , wr_idx );
1039
+ uint16_t rd_ptr = idx2ptr (f -> depth , rd_idx );
1039
1040
1040
1041
// Copy pointer to buffer to start writing to
1041
1042
info -> ptr_lin = & f -> buffer [wr_ptr ];
0 commit comments