Move WorkRequest to Completion.h
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
#include "jf_packet.h"
|
||||
#include "../common/JFJochException.h"
|
||||
|
||||
ProcessJFPacket::ProcessJFPacket(ThreadSafeFIFO<Completion> &in_c, ThreadSafeFIFO<ProcessWorkRequest> &in_wr,
|
||||
ProcessJFPacket::ProcessJFPacket(ThreadSafeFIFO<Completion> &in_c, ThreadSafeFIFO<WorkRequest> &in_wr,
|
||||
uint32_t nmodules)
|
||||
: m(2 * nmodules),
|
||||
c_fifo(in_c),
|
||||
|
||||
@@ -11,11 +11,6 @@
|
||||
|
||||
#include <shared_mutex>
|
||||
|
||||
struct ProcessWorkRequest {
|
||||
uint16_t *ptr;
|
||||
uint32_t handle;
|
||||
};
|
||||
|
||||
struct ModuleInfo {
|
||||
uint16_t *ptr;
|
||||
Completion c;
|
||||
@@ -24,11 +19,11 @@ struct ModuleInfo {
|
||||
class ProcessJFPacket {
|
||||
std::vector<std::mutex> m;
|
||||
ThreadSafeFIFO<Completion> &c_fifo;
|
||||
ThreadSafeFIFO<ProcessWorkRequest> &wr_fifo;
|
||||
ThreadSafeFIFO<WorkRequest> &wr_fifo;
|
||||
std::vector<ModuleInfo> module_info;
|
||||
std::atomic<uint64_t> packet_counter = 0;
|
||||
public:
|
||||
ProcessJFPacket(ThreadSafeFIFO<Completion> &c, ThreadSafeFIFO<ProcessWorkRequest> &wr, uint32_t nmodules);
|
||||
ProcessJFPacket(ThreadSafeFIFO<Completion> &c, ThreadSafeFIFO<WorkRequest> &wr, uint32_t nmodules);
|
||||
~ProcessJFPacket();
|
||||
void ProcessPacket(jf_udp_payload *datagram);
|
||||
uint64_t GetCounter();
|
||||
|
||||
@@ -8,7 +8,7 @@ ADD_LIBRARY(JungfraujochHost STATIC
|
||||
AcquisitionOfflineCounters.cpp AcquisitionOfflineCounters.h
|
||||
IBWrappers.cpp IBWrappers.h
|
||||
MlxRawEthDevice.cpp MlxRawEthDevice.h
|
||||
../../jungfrau/jf_packet.h LinuxSocketDevice.cpp LinuxSocketDevice.h FPGAAcquisitionDevice.cpp FPGAAcquisitionDevice.h)
|
||||
../../jungfrau/jf_packet.h LinuxSocketDevice.cpp LinuxSocketDevice.h FPGAAcquisitionDevice.cpp FPGAAcquisitionDevice.h WorkRequest.h)
|
||||
|
||||
TARGET_LINK_LIBRARIES(JungfraujochHost CommonFunctions HLSSimulation ${IBVERBS} JFCalibration)
|
||||
|
||||
|
||||
@@ -6,6 +6,11 @@
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
struct WorkRequest {
|
||||
uint16_t *ptr;
|
||||
uint32_t handle;
|
||||
};
|
||||
|
||||
struct Completion {
|
||||
enum class Type {Start, End, Image} type;
|
||||
|
||||
|
||||
@@ -111,7 +111,7 @@ void LinuxSocketDevice::HW_SetCancelDataCollectionBit() {
|
||||
|
||||
bool LinuxSocketDevice::HW_SendWorkRequest(uint32_t handle) {
|
||||
if (handle != UINT32_MAX)
|
||||
wr_queue.Put(ProcessWorkRequest{
|
||||
wr_queue.Put(WorkRequest{
|
||||
.ptr = buffer_device.at(handle),
|
||||
.handle = handle
|
||||
});
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
#include "AcquisitionDevice.h"
|
||||
|
||||
class LinuxSocketDevice : public AcquisitionDevice {
|
||||
ThreadSafeFIFO<ProcessWorkRequest> wr_queue;
|
||||
ThreadSafeFIFO<WorkRequest> wr_queue;
|
||||
|
||||
int32_t rcv_buf_size;
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ void MlxRawEthDevice::HW_SetCancelDataCollectionBit() {
|
||||
|
||||
bool MlxRawEthDevice::HW_SendWorkRequest(uint32_t handle) {
|
||||
if (handle != UINT32_MAX)
|
||||
wr_queue.Put(ProcessWorkRequest{
|
||||
wr_queue.Put(WorkRequest{
|
||||
.ptr = buffer_device.at(handle),
|
||||
.handle = handle
|
||||
});
|
||||
|
||||
@@ -19,7 +19,7 @@ class MlxRawEthDevice : public AcquisitionDevice {
|
||||
|
||||
std::mutex m;
|
||||
IBContext context;
|
||||
ThreadSafeFIFO<ProcessWorkRequest> wr_queue;
|
||||
ThreadSafeFIFO<WorkRequest> wr_queue;
|
||||
uint64_t mac_addr;
|
||||
uint32_t ipv4_addr;
|
||||
ActionConfig cfg;
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
TEST_CASE("ProcessRawPacketTest_Empty") {
|
||||
ThreadSafeFIFO<Completion> c_fifo;
|
||||
ThreadSafeFIFO<ProcessWorkRequest> wr_fifo;
|
||||
ThreadSafeFIFO<WorkRequest> wr_fifo;
|
||||
{
|
||||
ProcessJFPacket process(c_fifo, wr_fifo, 2);
|
||||
|
||||
@@ -20,13 +20,13 @@ TEST_CASE("ProcessRawPacketTest_Empty") {
|
||||
|
||||
TEST_CASE("ProcessRawPacketTest") {
|
||||
ThreadSafeFIFO<Completion> c_fifo;
|
||||
ThreadSafeFIFO<ProcessWorkRequest> wr_fifo;
|
||||
ThreadSafeFIFO<WorkRequest> wr_fifo;
|
||||
|
||||
std::vector<uint16_t> array_0(RAW_MODULE_SIZE), array_1(RAW_MODULE_SIZE), array_2(RAW_MODULE_SIZE);
|
||||
|
||||
wr_fifo.Put(ProcessWorkRequest{.ptr = array_0.data(), .handle = 0});
|
||||
wr_fifo.Put(ProcessWorkRequest{.ptr = array_1.data(), .handle = 1});
|
||||
wr_fifo.Put(ProcessWorkRequest{.ptr = array_2.data(), .handle = 2});
|
||||
wr_fifo.Put(WorkRequest{.ptr = array_0.data(), .handle = 0});
|
||||
wr_fifo.Put(WorkRequest{.ptr = array_1.data(), .handle = 1});
|
||||
wr_fifo.Put(WorkRequest{.ptr = array_2.data(), .handle = 2});
|
||||
|
||||
DiffractionExperiment experiment(DetectorGeometry(8));
|
||||
experiment.DataStreams(2);
|
||||
|
||||
@@ -180,11 +180,11 @@ void test_packet_processing(Logger &logger) {
|
||||
auto start_time = std::chrono::system_clock::now();
|
||||
for (int z = 0; z < ntries; z++) {
|
||||
ThreadSafeFIFO<Completion> c;
|
||||
ThreadSafeFIFO<ProcessWorkRequest> wr;
|
||||
ThreadSafeFIFO<WorkRequest> wr;
|
||||
ProcessJFPacket process(c, wr, nmodules);
|
||||
|
||||
for (uint32_t i = 0; i < nmodules * nframes; i++)
|
||||
wr.Put(ProcessWorkRequest{
|
||||
wr.Put(WorkRequest{
|
||||
.ptr = output.data() + i * RAW_MODULE_SIZE,
|
||||
.handle = i
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user