| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Throughout UHD, we are using a random mix of __FUNCTION__, __func__,
__PRETTY_FUNCTION__, and BOOST_CURRENT_FUNCTION. Note that the first two
macros are non-standard (although many compilers understand them), and
the last requires Boost. __func__ is available since C++11, but is not
the best choice because the C++ standard doesn't require it to be of any
specific value.
We thus define UHD_FUNCTION and UHD_PRETTY_FUNCTION as portable macros.
The former simply contains the undecorated function name, the latter the
expanded function with full signature.
As it happens, our currently supported compilers didn't have any issues
using non-standard macros, so the main fix here is the removal of the
Boost macros and the harmonization of the other macros.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is a very mechanical task that could almost have been done with
sed. Boost versions of mutexes and locks were removed, and replaced with
std:: versions. The replacement tables are as follows:
== Mutexes ==
- boost::mutex -> std::mutex
- boost::recursive_mutex -> std::recursive_mutex
Mutexes behave identically between Boost and std:: and have the same
API.
== Locks ==
C++11 has only two types of lock that we use/need in UHD:
- std::lock_guard: Identical to boost::lock_guard
- std::unique_lock: Identical to boost::unique_lock
Boost also has boost::mutex::scoped_lock, which is a typedef for
boost::unique_lock<>. However, we often have used scoped_lock where we
meant to use lock_guard<>. The name is a bit misleading, "scoped lock"
sounding a bit like an RAII mechanism. Therefore, some previous
boost::mutex::scoped_lock are now std::lock_guard<>.
std::unique_lock is required when doing more than RAII locking (i.e.,
unlocking, relocking, usage with condition variables, etc.).
== Condition Variables ==
Condition variables were out of the scope of this lock/mutex change, but
in UHD, we inconsistently use boost::condition vs.
boost::condition_variable. The former is a templated version of the
latter, and thus works fine with std::mutex'es. Therefore, some
boost::condition_variable where changed to boost::condition.
All locks and mutexes use `#include <mutex>`. The corresponding Boost
includes were removed. In some cases, this exposed issues with implicit
Boost includes elsewhere. The missing explicit includes were added.
|
|
|
|
|
|
|
|
|
| |
The checks from the new clang-tidy file are applied to the source tree
using:
$ find . -name "*.cpp" | sort -u | xargs \
--max-procs 8 --max-args 1 clang-tidy --format-style=file \
--fix -p /path/to/compile_commands.json
|
|
|
|
|
|
|
|
|
|
|
| |
Starting with 1.0.22, libusb considers libusb_set_debug() deprecated.
This replaces said call with libusb_set_option(), conditionally on the
libusb version. This has no effect on the execution, but will remove
some compiler versions, and make this code more future-proof.
Note that Ubuntu 18.04 ships libusb 1.0.21, so this conditional code
needs to remain until that version is deprecated and libusb version is
bumped higher.
|
|
|
|
|
| |
Note: template_lvbitx.{cpp,hpp} need to be excluded from the list of
files that clang-format gets applied against.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Note: Replacing everything with a lambda would be even better, but that
can't be easily scripted so we'll do this as a first step to reduce the
Boost footprint.
This also removes occurences of #include <boost/bind.hpp>, and makes
sure all usages of std::bind have an #include <functional>. clang-format
wasn't always applied to minimize the changeset in this commit, however,
it was applied to the blocks of #includes.
Due to conflicts with other Boost libraries, the placeholders _1, _2,
etc. could not be directly used, but had to be explicitly called out
(as std::placeholders::_1, etc.). This makes the use of std::bind even
uglier, which serves as another reminder that using std::bind (and even
more so, boost::bind) should be avoided.
nirio/rpc/rpc_client.cpp still contains a reference to boost::bind. It
was not possible to remove it by simply doing a search and replace, so
it will be removed in a separate commit.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This removes the following Boost constructs:
- boost::shared_ptr, boost::weak_ptr
- boost::enable_shared_from_this
- boost::static_pointer_cast, boost::dynamic_pointer_cast
The appropriate includes were also removed. All C++11 versions of these
require #include <memory>.
Note that the stdlib and Boost versions have the exact same syntax, they
only differ in the namespace (boost vs. std). The modifications were all
done using sed, with the exception of boost::scoped_ptr, which was
replaced by std::unique_ptr.
References to boost::smart_ptr were also removed.
boost::intrusive_ptr is not removed in this commit, since it does not
have a 1:1 mapping to a C++11 construct.
|
|
|
|
|
| |
- It was possible for two threads to generate a global session, which would
cause one of them to become invalid.
|
|
|
|
|
|
|
|
|
|
| |
This is a continuation of 967be2a4.
$ find host/lib/transport -iname *.hpp -o -iname *.cpp |\
xargs clang-format -i -style=file
Skipping host/lib/transport/nirio/ because of build errors.
$ git checkout host/lib/transport/nirio
|
|
|
|
|
|
|
| |
All copyright is now attributed to "Ettus Research, a National
Instruments company".
SPDX headers were also updated to latest version 3.0.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Note: This is the first commit that uses for-range, and range-based
for-loops are now usable for UHD development.
|
|
|
|
|
|
|
|
| |
types)
- Also removes all references to boost/cstdint.hpp and replaces it with
stdint.h (The 'correct' replacement would be <cstdint>, but not all of our
compilers support that).
|
|
|
|
| |
usage of returned values.
|
|
|
|
| |
out-of-line from class definition to reduce number of vtables emitted (according to clang).
|
|
|
|
|
|
|
| |
object cause application to terminate
- Prevented libusb_zero_copy_single from submitting transfers after libusb reports an error
- Made error messages in libusb_zero_copy and udp_zero_copy more descriptive
|
|
|
|
|
| |
- Fixes USB hang issues on OS X
- Uses usb_errors
|
|\
| |
| |
| |
| |
| | |
Conflicts:
host/lib/usrp/b200/b200_impl.cpp
host/lib/usrp/b200/b200_impl.hpp
|
| |
| |
| |
| |
| | |
Conflicts:
host/lib/transport/libusb1_base.cpp
|
|\| |
|
| | |
|
|/ |
|
| |
|
|
|
|
|
| |
* When overwriting a string field with a shorter string, libusb doesn't erase extra characters
* Extra processing of this string (already done by load_eeprom) removes extraneous characters
|
|\ |
|
| | |
|
|/
|
|
| |
events and expanded packet size to 16k
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
only the assert has implementation is in this header
uhd assert throw moved to the exception header
updated code base includes to match
|
| |
|
|
|
|
| |
discovery time
|
| |
|
|
|
|
|
|
|
|
|
| |
Heavy work on the zero copy interface and endpoint wrappers to properly use the async io.
The global libusb session starts a thread to run the event handler,
the async callbacks push completed transfers onto a thread-safe bounded buffer.
The managed buffer creation routines use the bounded buffer to efficiently pop off completed transfers.
works on linux, throws a weird exception on cleanup
|
|
|
|
|
|
|
|
| |
libusb allocation stuff had been moved inside of smart pointer classes to handle automatic cleanup
the public device handle implementation now holds an actual libusb device inside of it
needs testing - all platforms
|
| |
|
| |
|
|
|
|
| |
usrp_init_eeprom.cpp. Hacked up the firmware makefile to behave and to generate .bin EEPROM images instead of IHX.
|
| |
|
|
|
|
|
|
|
|
| |
This patch limits all libusb device enumeration operations to FSF
(Vendor ID = 0xfffe) devices, which removes a lot of unncessary
libusb output when debug mode is enabled. The reference counts
held by the libusb device list are also reduced, which prevents
holding references to unused devices.
|
|
Common libusb1 code is consolidated in the libusb base file.
|