DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
DpdkMempool.hpp
Go to the documentation of this file.
1
26#ifndef DPDKLIBS_INCLUDE_DPDKLIBS_DPDKMEMPOOL_HPP_
27#define DPDKLIBS_INCLUDE_DPDKLIBS_DPDKMEMPOOL_HPP_
28
29#include <rte_mempool.h>
30
31#include <map>
32#include <memory>
33
34namespace dunedaq::dpdklibs {
35
37{
38 // No-op for a null handle.
39 void operator()(rte_mempool* pool) const noexcept;
40};
41
42using unique_mempool = std::unique_ptr<rte_mempool, MempoolDeleter>;
43
44// Move a pool from a default-deleting unique_ptr into unique_mempool. The
45// default deleter never runs.
47take_mempool_ownership(std::unique_ptr<rte_mempool>&& legacy);
48
50{
51public:
52 BorrowedPoolMap() = default;
57
58 // Releases every entry. No deleter runs on a borrowed pool.
60
61 void borrow(int index, rte_mempool* pool);
62
63 std::map<int, std::unique_ptr<rte_mempool>>& get();
64
65private:
66 std::map<int, std::unique_ptr<rte_mempool>> m_map;
67};
68
69} // namespace dunedaq::dpdklibs
70
71#endif // DPDKLIBS_INCLUDE_DPDKLIBS_DPDKMEMPOOL_HPP_
void borrow(int index, rte_mempool *pool)
BorrowedPoolMap(BorrowedPoolMap &&)=delete
BorrowedPoolMap & operator=(BorrowedPoolMap &&)=delete
std::map< int, std::unique_ptr< rte_mempool > > & get()
BorrowedPoolMap(const BorrowedPoolMap &)=delete
std::map< int, std::unique_ptr< rte_mempool > > m_map
BorrowedPoolMap & operator=(const BorrowedPoolMap &)=delete
unique_mempool take_mempool_ownership(std::unique_ptr< rte_mempool > &&legacy)
std::unique_ptr< rte_mempool, MempoolDeleter > unique_mempool
void operator()(rte_mempool *pool) const noexcept