This is the patch: --- gnuradio-3.3.0/usrp2/host/lib/eth_buffer.cc 2010-06-01 07:04:09.000000000 +0200 +++ gnuradio-3.3.0-fix/usrp2/host/lib/eth_buffer.cc 2011-03-10 11:05:52.652353106 +0100 @@ -156,8 +156,14 @@ { // if we have background thread, stop it here
- if (!d_using_tpring && d_buf) + if (!d_using_tpring && d_buf) { free(d_buf); + } + else { + if(d_buf) { + munmap(d_buf, d_buflen); + } + } return d_ethernet->close(); } On Wed, Mar 9, 2011 at 7:35 PM, Gaetano Mendola <mend...@gmail.com> wrote: > Hi, > in the method usrp2::eth_buffer::open in case the attempt to use the > socket option PACKET_RX_RING > fails an mmap is performed instead of a malloc. > > The method usrp2::eth_buffer::close however has to perform a munmap in > order to let the > kernel release the mapped memory, indeed only closing the file > descriptor isn't enough. > > I suggest to change (inside the close method): > > if (!d_using_tpring && d_buf) > free(d_buf); > > to: > > > if (!d_using_tpring) { > free(d_buf); > } else { > if (d_buf) munmap(d_buf, d_buflen); > } > > note that there is no need to test for d_buf in case of free call > indeed freeing a pointer to 0 is perfect valid code, the standard > say that in case of free(NULL) no action is taken, to the other side > munmap a NULL pointer is not permitted (hence the test). > > Regards > Gaetano Mendola > > -- > cpp-today.blogspot.com > -- cpp-today.blogspot.com _______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio