GSI Object Oriented Online Offline (Go4)  GO4-6.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
s_set_mo.h
Go to the documentation of this file.
1 // $Id: s_set_mo.h 3327 2021-10-18 10:41:57Z linev $
2 //-----------------------------------------------------------------------
3 // The GSI Online Offline Object Oriented (Go4) Project
4 // Experiment Data Processing at EE department, GSI
5 //-----------------------------------------------------------------------
6 // Copyright (C) 2000- GSI Helmholtzzentrum fuer Schwerionenforschung GmbH
7 // Planckstr. 1, 64291 Darmstadt, Germany
8 // Contact: http://go4.gsi.de
9 //-----------------------------------------------------------------------
10 // This software can be used under the license agreements as stated
11 // in Go4License.txt file which is part of the distribution.
12 //-----------------------------------------------------------------------
13 
14 #ifndef S_SET_MO_H
15 #define S_SET_MO_H
16 
17 /*
18  * N.Kurz 8-Jun-1998
19  *
20  * within this structure the setup information for a n # m
21  * (multiple output/collector) mbs system is specified
22  */
23 
24 #include "typedefs.h"
25 #include "mo_def.h"
26 
27 typedef struct
28 {
29  INTU4 l_endian; /* must be 1 */
30  INTU4 l_version; /* structure version */
31  INTU4 l_set_mo_lw; /* length of structure */
32  INTU4 l_swap_lw; /* longwords to be swapped */
33  INTU4 l_max_nodes; /* set to MO__N_NODE */
34  INTU4 l_no_senders; /* actual number of senders */
35  INTU4 l_no_receivers; /* actual number of receivers */
36  INTU4 bl_dr_active[MO__N_NODE]; /* active receivers */
37 
38  INTU4 l_rd_pipe_base_addr [MO__N_NODE] [MO__N_NODE];
39  /* base addresses of all pipes residing on the ds nodes seen remote */
40  /* from dr nodes l_rd_pipe_base_addr[dr_node_id][ds_node_id]. */
41  /* this setup parametes are only necessary for an address mapped */
42  /* transfer mode (l_trans_mode = 0). */
43  INTU4 l_rd_pipe_seg_len [MO__N_NODE];
44  /* size of pipe segments on ds nodes. index is ds id. this information */
45  /* is only necessary if transfer type 0 (single shot data transfer) */
46  /* from any of the ds nodes. !!!! WARNING !!!! this information is */
47  /* redundant. the size is also specified in the setup.usf or */
48  /* set_ml.usf of the ds node and must match. */
49  INTU4 l_rd_pipe_trans_mode [MO__N_NODE] [MO__N_NODE];
50  /* data transfer mode from ds nodes to dr nodes */
51  /* l_rd_pipe_base_addr[dr_node_id][ds_node_id]. */
52  /* transfer mode: 0xxx = address mapped, dr reads data */
53  /* 1xxx = message oriented mode ( tcp ), ds sends data */
54  /* 01xx = address mapped DMA modes (various) */
55  /* */
56  /* 0x 0 = standard singe cycle address mapped */
57  /* 0x 101 = VME DMA E7 */
58  /* 0x 102 = VME DMA RIO2 <- RIO2 */
59  /* 0x 103 = VSB DMA RIO2 <- "any" VSB slave device */
60  /* 0x 104 = PVIC DMA RIO2 */
61  /* 0x 105 = VME DMA RIO2 <- E7 / VME memory */
62  /* 0x1001 = TCP sockets */
64  /* two format modes have been forseen, whereas only mode 1 is imple- */
65  /* mented yet. */
66  /* mode 1: ds node sends data, or dr node reads data (depending on */
67  /* transfer type) to an intermediate event buffer of size */
68  /* l_max_evt_size. formatting, and possible byte swapping is */
69  /* done afterwards from the intermediate event buffer into the */
70  /* streams. */
71  /* mode 2: ds node sends data, or dr node reads data and formats */
72  /* immediately into the streams. not yet implemented */
73  INTU4 l_base_addr_evt_buf[MO__N_NODE];
74  /* if l_form_mode = 1: (intermediate formatting) */
75  /* for transfer types where address mapped writing from ds node or dma */
76  /* data transfer is done a shared segement is needed and created with */
77  /* physical base address l_base_addr_evt_buf and size l_max_evt_size. */
78  /* if l_form_mode = 2: (direct formatting) */
79  /* a shared segment for this buffer must also be created for */
80  /* direct formatting into streams if the ds node writes address mapped */
81  /* or dma is done. this buffer will be used to hold an event if the */
82  /* actual stream has less space than l_max_evt_size since in this mode */
83  /* the actual event size is not known before the transfer of the last */
84  /* fraction. */
85  /* */
86  /* if l_base_addr_evt_buf != 0 an smem_create segment will be created */
87  /* if l_base_addr_evt_buf = 0 ( or not specified) a buffer of size */
88  /* l_max_evt_size will be created with malloc and is therefore not */
89  /* contigious in the address space. */
90  /* MO__N_NODE runs over dr node ids. */
92  /* TOTAL maximum event size, which could occur within this setup. */
93  /* in bytes. */
95  /* many subevents/fragments can be send/read in one transfer (i.e. */
96  /* tcp, vme block transfer) from m_ds to m_dr if the data is conscu- */
97  /* tive. l_n_frag specifies the number fragments sent in such a packet */
98  INTU4 l_ev_buf_len [MO__N_NODE];
99  INTU4 l_n_ev_buf [MO__N_NODE];
100  INTU4 l_n_stream [MO__N_NODE];
101  INTU4 l_base_addr_stream_seg [MO__N_NODE];
102  /* only nedded if l_form mode = 2. see explanation above */
103  INTU4 l_out_mode [MO__N_NODE];
104  CHARS c_ds_hostname [MO__N_NODE][16];
105  /* name of ds nodes */
106  CHARS c_dr_hostname [MO__N_NODE][16];
107  /* name of dr nodes */
108 
109 } s_set_mo;
110 
111 #endif
112 
INTU4 l_max_evt_size
Definition: s_set_mo.h:91
INTU4 l_form_mode
Definition: s_set_mo.h:63
INTU4 l_no_senders
Definition: s_set_mo.h:34
INTU4 l_swap_lw
Definition: s_set_mo.h:32
INTU4 l_version
Definition: s_set_mo.h:30
INTU4 l_n_frag
Definition: s_set_mo.h:94
unsigned int INTU4
Definition: typedefs.h:29
INTU4 l_endian
Definition: s_set_mo.h:29
INTU4 l_no_receivers
Definition: s_set_mo.h:35
#define MO__N_NODE
Definition: mo_def.h:30
INTU4 l_max_nodes
Definition: s_set_mo.h:33
char CHARS
Definition: typedefs.h:21
INTU4 l_set_mo_lw
Definition: s_set_mo.h:31