Skip to content

Make gds broadcasts work

Historically, there have been two main types of broadcasts in daqd, the DC data stream (the 10Gb udp broadcast) and the GDS frame transfer. When DATA_CONCENTRATOR was defined only the DC data stream is used. This mode has been removed from the daq architecture. So the only remaining broadcast mode should be the GDS frame transfer.

The big difference between the two broadcast methods is the data source. For the DC stream the source is the main circular buffer. For the GDS the data source is a frame file that the framer_io function mmaps and pushes as a block of memory.

There were several modes of operation for the daqd, and DATA_CONCENTRATOR was picked when collapsing the daqd down to one binary. So remove support for the DC data stream.

  • Removes support for broadcasting testpoints
  • Removes the udp broadcast logic for the DC stream
  • Removes a number of #if DATA_CONCENTOR macro guards
  • Removes a number of #if GDS_TESTPOINT macro guards

The final flow of the broadcast data is now as follows:

the parser sees the request for the net-writer with a broadcast address. This triggers a net writer to be created, a producer thread to start, a circular buffer to be created. The producer copies data from the main circular buffer and unlocks the main circular buffer it puts into the new circular buffer with a nowait put operation (which is allowed to fail). Nothing has ever emptied this, so a consumer thread is not launched (it didn't do anything anyways).

Edited by Jonathan Hanks

Merge request reports