Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
The Portable Driver Architecture (PDA) is a microdriver library for programming Linux PCI drivers in the userspace.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
1__Downloading https://compeng.uni-frankfurt.de/index.php?id=173 2__Installation Requirements for Linux: - Installed GCC - Installed libtool - libpci and related headers (comes with pciutils) - libkmod and related headers - libnuma and related headers (comes with numactl) - Doxygen (if the documentation is needed) Type: ./configure --help ./configure <options> make make install cd patches/<operating system>/ make install 3__Documentation The PDA is documented with doxygen. Therefore Doxygen must be installed to get a full reference manual (tested with version 1.8.4). Type: make doc Look into the subfolder doxygen/ 4__Compatibility - Linux between 2.6.29 and 3.19 5__Known Issues - Older versions of libpci leak memory. It is therefore recommended to update libpci to version 3.3.1 or newer. Otherwise the device description string might not be available. 6__Version_Log: 11.0.8 * Added DDMA 11.0.7 * Added feature for disabling device enumeration * Added feature for using DMA buffer as Posix-SHM replacement with low overhead * Added feature for listing allocated DMA buffers * Removed aborts * Changed license to three clause BSD 10.2.6 * Maintenance release * Bugfixes and optimizations * Added locking for buffer allocation, freeing, and mapping * Added on-demand paging for DMA buffers 10.1.6 * Maintenance release * Fixed wrap mapping bug(s) * Fixed a couple of bugs in error handling * Enhanced valgrind compatibility * Tested support for Linux +3.19 10.0.6 * Added userspace buffer allocation * Removed obsolete DMA buffer direction specifier * Optimized udev scripts 9.1.5 * Fixed race conditions during buffer allocation * Tested support for Linux +3.18 9.0.5 * Added NUMA control support * Completed doxygen documentation * Fixed RPM libtool bug in build flow * Added automatic RPM config * Added --help option to configure script * Tested support for Linux +3.16 * Tested support for Linux +3.17 8.1.4 * Added support for MSI interrupting * Added initial support for hotplug (virtual bars) 8.0.4 * Disabled auto vectorization * Added non SSE based memcpy routines * Added non vectorizable getter and setter functions * Fixed interrupting bug which appeared in conjunction with pthreads * Started Doxygen documentation 8.0.3 * Fixed bug with buffer list handling * Fixed buffer size bug (return actually allocated instead of requested size) 8.0.2 * Added support for max payload size and max read request size * Added PDA debug version ignore for the CMake include * Fixed bug which caused crashing if user permissions were not granted * Tested support for Linux +3.15 7.4.1 * Fixed udev "google chrome" bug (udev rule was going wild) * Fixed buffer reallocation bug * Code cleanup of the linux kernel module 7.3.1 * Fixed rpmbuild support for kernel module * Fixed support for 64Bit BARs * Added support for executing as non-privileged user * Tested support for Linux +3.14 7.2.1 * Rpmbuild support (make rpm) for the uio_pci_dma kernel module 7.1.1 * Fixed sysfs path bug * Added rpmbuild capabilities (make rpm) to make dist * Cleaned kernel adapter code * Tested support for Linux +3.13 7.0.1 * Fixed page sorting bug * Fixed buffer indexing bug * Fixed support for Linux +3.12 6.1.1 * KMOD checking is only activated if libkmod is really installed. Issues a big fat warning if used without KMOD. 6.0.1 * DMA buffer mapping without caching * Checks adapter version * PDA config can return PDA version now * Added separate PDAinit function * Added separate PDAfinalize function * Added function to check that the uses PDA has the right version (even if it compiles) * PDA-Debug now usable from outside * Bug fixing * Works against Linux +3.9 +3.10 5.0.0 * SVN rev 529 * Fixed buffer rediscover * Stabilized wrap mapping * Moved some set and get functions into macros * Revised buffer lookup 4.3.4 * Added license header 4.2.4 * Enhanced compatibility to Linux 2.6.29 - 3.8 4.1.4 * Added strict return code checking * Fixed test cases * Fixed warnings 4.0.4 * Added support for buffer wrap mapping ("overmapping"-> Linux only) 4.0.3 * Added support for DMA (Linux only) * Buffer allocation * Scatter gather lists (with automatic merging) 3.0.2 * First tested version with support for: * Basic Address Registers * Interrupts 2.0.0 * Bug fixing (version 0.0.0 was broken). * BAR detection used the wrong bits (both libpci and config space) * Error handling prevented correct working in a couple of cases * All macros with arguments where broken (extra bracing was needed) * Added support for 64Bit BARs * Added code beautifier * Added get methods for device query * Added configure checks * Removed UIO device deletion (UIO is persistent now) 0.0.0 * Initial version. * Added basic support for Linux and UIO * Added BAR and IRQ handling