diff options
author | Josh Blum <josh@joshknows.com> | 2011-02-10 13:58:38 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-02-10 13:58:38 -0800 |
commit | 1be2590962669f307dce24ccb0b0011b3f3f25f5 (patch) | |
tree | bebf7fe400e2b794809a9c34a58105d1ed64b8d2 /host/lib/transport | |
parent | 1daf74483ed3e5e5a70f856aecefa96f30b2cbc2 (diff) | |
download | uhd-1be2590962669f307dce24ccb0b0011b3f3f25f5.tar.gz uhd-1be2590962669f307dce24ccb0b0011b3f3f25f5.tar.bz2 uhd-1be2590962669f307dce24ccb0b0011b3f3f25f5.zip |
uhd: tweaks to bounded buffer
Added push with haste.
Call with haste first in the wait methods to avoid time compare/wait when not needed.
Added new calls to the libusb and udp zero copy impls
tests pass
Diffstat (limited to 'host/lib/transport')
-rw-r--r-- | host/lib/transport/libusb1_zero_copy.cpp | 4 | ||||
-rw-r--r-- | host/lib/transport/udp_zero_copy_asio.cpp | 10 |
2 files changed, 7 insertions, 7 deletions
diff --git a/host/lib/transport/libusb1_zero_copy.cpp b/host/lib/transport/libusb1_zero_copy.cpp index ca37f351f..6fab5ae6f 100644 --- a/host/lib/transport/libusb1_zero_copy.cpp +++ b/host/lib/transport/libusb1_zero_copy.cpp @@ -132,7 +132,7 @@ static void callback(libusb_transfer *lut){ * \param pointer to libusb_transfer */ void usb_endpoint::callback_handle_transfer(libusb_transfer *lut){ - _completed_list.push_with_wait(lut); + _completed_list.push_with_haste(lut); } @@ -161,7 +161,7 @@ usb_endpoint::usb_endpoint( //input luts are immediately submitted to be filled //output luts go into the completed list as free buffers if (_input) this->submit(_all_luts.back()); - else _completed_list.push_with_wait(_all_luts.back()); + else _completed_list.push_with_haste(_all_luts.back()); } } diff --git a/host/lib/transport/udp_zero_copy_asio.cpp b/host/lib/transport/udp_zero_copy_asio.cpp index 87c5ec823..c45b196cf 100644 --- a/host/lib/transport/udp_zero_copy_asio.cpp +++ b/host/lib/transport/udp_zero_copy_asio.cpp @@ -216,14 +216,14 @@ public: managed_recv_buffer::sptr get_recv_buff(double timeout){ udp_zero_copy_asio_mrb *mrb = NULL; - if (is_recv_socket_ready(timeout) and _pending_recv_buffs.pop_with_haste(mrb)){ + if (is_recv_socket_ready(timeout) and _pending_recv_buffs.pop_with_timed_wait(mrb, timeout)){ return mrb->get_new(::recv(_sock_fd, mrb->cast<char *>(), _recv_frame_size, 0)); } return managed_recv_buffer::sptr(); } UHD_INLINE void handle_recv(udp_zero_copy_asio_mrb *mrb){ - _pending_recv_buffs.push_with_pop_on_full(mrb); + _pending_recv_buffs.push_with_haste(mrb); } void release(udp_zero_copy_asio_mrb *mrb){ @@ -245,16 +245,16 @@ public: * - A managed buffer is always available. * - The queue can never be over-filled. ******************************************************************/ - managed_send_buffer::sptr get_send_buff(double){ + managed_send_buffer::sptr get_send_buff(double timeout){ udp_zero_copy_asio_msb *msb = NULL; - if (_pending_send_buffs.pop_with_haste(msb)){ + if (_pending_send_buffs.pop_with_timed_wait(msb, timeout)){ return msb->get_new(_send_frame_size); } return managed_send_buffer::sptr(); } UHD_INLINE void handle_send(udp_zero_copy_asio_msb *msb){ - _pending_send_buffs.push_with_pop_on_full(msb); + _pending_send_buffs.push_with_haste(msb); } void commit(udp_zero_copy_asio_msb *msb, size_t len){ |