next up previous contents
Next: The Garbage Demon Up: The DD System Previous: Syncronization Issues

Event Distribution

As mentioned above processes can specify what kind of events they receive. Every event is given a set of control words when they are injected into the DD system. These words are used to request events of a given type.
In the E787 experiments one of these control words is the level 0 trigger information. The different data loggers (E787 currently writes to 10 different tape drives in parallel) specify which event types they want, thus the different event triggers are written to different tapes.

Currently there are four control words: ctlw1, ctlw2, ctlb1 and ctlb2. The first two operates on a equal basis, i.e. a process requests events with say ctw1 == requested_value, the other on a bit basis, i.e. a process requests events with - say - second bit of ctlb1 set. The exact requirements can be specified by the user.

Processes can either request every event, request a prescaled fraction of events of a given type or receive an event only if they ask for it. A process can also request that a given number of events are set apart for him, such that he always gets an event immediately if he asks for it. This feature is also useful if the data taking is characterized by a spill structure (such as at the AGS).

In which order will processes receive events?
The fifos can be imagined as an array (see figure gif) and a process attaching to the DD system will receive by default the first free fifo within that array (note that processes are allowed to attach/detach to/from the DD system at any time).
This behaviour is important if one has consumer processes that modify the event or if one wants the data loggers to log the data before other lower priority / very slow consumers access it.
Fifos can be declared at initialisation time in a given order (so called static fifos). These fifos will be inactive (i.e. no events will be written into them) until a process attaches to them and activates them (user routine ddu_start(). These static fifos can be declared in the correct order in the user routine ddu_def_static_fifos).

 
Figure:   Schematic view of the event distribution within the fifo system.



next up previous contents
Next: The Garbage Demon Up: The DD System Previous: Syncronization Issues



Online software development
Thu Mar 14 10:35:53 EST 1996