18 #ifndef INCLUDED_UHD_TRANSPORT_ZERO_COPY_HPP
19 #define INCLUDED_UHD_TRANSPORT_ZERO_COPY_HPP
22 #include <boost/utility.hpp>
23 #include <boost/shared_ptr.hpp>
24 #include <boost/intrusive_ptr.hpp>
25 #include <boost/detail/atomic_count.hpp>
27 namespace uhd{
namespace transport{
34 #ifdef UHD_TXRX_DEBUG_PRINTS
35 _mb_num = s_buffer_count;
48 virtual void release(
void) = 0;
63 return static_cast<T
>(_buffer);
75 template <
typename T>
UHD_INLINE boost::intrusive_ptr<T> make(
76 T *p,
void *buffer,
size_t length
80 return boost::intrusive_ptr<T>(p);
84 typedef boost::intrusive_ptr<managed_buffer>
sptr;
87 return (
int) _ref_count;
90 #ifdef UHD_TXRX_DEBUG_PRINTS
99 #ifdef UHD_TXRX_DEBUG_PRINTS
104 #ifdef UHD_TXRX_DEBUG_PRINTS
105 static boost::detail::atomic_count s_buffer_count;
124 typedef boost::intrusive_ptr<managed_recv_buffer>
sptr;
134 typedef boost::intrusive_ptr<managed_send_buffer>
sptr;
154 typedef boost::shared_ptr<zero_copy_if>
sptr;
173 virtual size_t get_num_recv_frames(
void)
const = 0;
180 virtual size_t get_recv_frame_size(
void)
const = 0;
194 virtual size_t get_num_send_frames(
void)
const = 0;
201 virtual size_t get_send_frame_size(
void)
const = 0;