attached is a new version for fusb_linux.cc.
The current implementation uses three std::list lists for free, pending
completed urbs, so submitting a single urb causes three allocs and three
(pushing and popping of the list).
The new implementation uses a circular list for the urbs, where each urb
marked as free, pending or completed. As the total number of allocated
constant, no allocs or frees are needed.
usrp/host/apps/test_usrp_standard_tx -B 512 -N 64 -M 128
old code needs ~990e6 instructions, new code 690e6 instructions. The
usrp_basic_tx::write goes down from 380e6 to 80e6 (so almost down to a
…), the remaining instructions is the pattern fill for the sample