diff --git a/CMakeLists.txt b/CMakeLists.txt index abc8f9b..57a1c2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,6 +126,14 @@ else (DETACH_KERNEL_DRIVER) message (STATUS "Building with kernel driver detaching disabled, use -DDETACH_KERNEL_DRIVER=ON to enable") endif (DETACH_KERNEL_DRIVER) +option(ENABLE_ZEROCOPY "Enable usbfs zero-copy support" OFF) +if (ENABLE_ZEROCOPY) + message (STATUS "Building with usbfs zero-copy support enabled") + add_definitions(-DENABLE_ZEROCOPY=1) +else (ENABLE_ZEROCOPY) + message (STATUS "Building with usbfs zero-copy support disabled, use -DENABLE_ZEROCOPY=ON to enable") +endif (ENABLE_ZEROCOPY) + ######################################################################## # Add subdirectories ######################################################################## diff --git a/configure.ac b/configure.ac index 5b94828..1afbfbd 100644 --- a/configure.ac +++ b/configure.ac @@ -101,6 +101,12 @@ AC_ARG_ENABLE(driver-detach, CFLAGS="$CFLAGS -DDETACH_KERNEL_DRIVER" fi]) +AC_ARG_ENABLE(zerocopy, +[ --enable-zerocopy Enable usbfs zero-copy support (disabled by default)], +[if test x$enableval = xyes; then + CFLAGS="$CFLAGS -DENABLE_ZEROCOPY" +fi]) + dnl Generate the output AC_CONFIG_HEADER(config.h) diff --git a/src/librtlsdr.c b/src/librtlsdr.c index d72a0f5..213e96c 100644 --- a/src/librtlsdr.c +++ b/src/librtlsdr.c @@ -1751,7 +1751,7 @@ static int _rtlsdr_alloc_async_buffers(rtlsdr_dev_t *dev) dev->xfer_buf = malloc(dev->xfer_buf_num * sizeof(unsigned char *)); memset(dev->xfer_buf, 0, dev->xfer_buf_num * sizeof(unsigned char *)); -#if defined (__linux__) && LIBUSB_API_VERSION >= 0x01000105 +#if defined(ENABLE_ZEROCOPY) && defined (__linux__) && LIBUSB_API_VERSION >= 0x01000105 fprintf(stderr, "Allocating %d zero-copy buffers\n", dev->xfer_buf_num); dev->use_zerocopy = 1;