GSI Object Oriented Online Offline (Go4) GO4-6.4.0
Loading...
Searching...
No Matches
s_set_mo.h
Go to the documentation of this file.
1// $Id$
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
27typedef 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
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). */
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. */
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 */
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 */
102 /* only nedded if l_form mode = 2. see explanation above */
105 /* name of ds nodes */
107 /* name of dr nodes */
108
109} s_set_mo;
110
111#endif
112
#define MO__N_NODE
Definition mo_def.h:30
INTU4 l_rd_pipe_trans_mode[MO__N_NODE][MO__N_NODE]
Definition s_set_mo.h:49
INTU4 l_n_stream[MO__N_NODE]
Definition s_set_mo.h:100
INTU4 l_endian
Definition s_set_mo.h:29
INTU4 l_ev_buf_len[MO__N_NODE]
Definition s_set_mo.h:98
INTU4 l_base_addr_evt_buf[MO__N_NODE]
Definition s_set_mo.h:73
INTU4 l_no_senders
Definition s_set_mo.h:34
INTU4 l_out_mode[MO__N_NODE]
Definition s_set_mo.h:103
INTU4 l_base_addr_stream_seg[MO__N_NODE]
Definition s_set_mo.h:101
INTU4 l_max_evt_size
Definition s_set_mo.h:91
CHARS c_ds_hostname[MO__N_NODE][16]
Definition s_set_mo.h:104
INTU4 l_rd_pipe_seg_len[MO__N_NODE]
Definition s_set_mo.h:43
INTU4 l_no_receivers
Definition s_set_mo.h:35
INTU4 bl_dr_active[MO__N_NODE]
Definition s_set_mo.h:36
CHARS c_dr_hostname[MO__N_NODE][16]
Definition s_set_mo.h:106
INTU4 l_set_mo_lw
Definition s_set_mo.h:31
INTU4 l_form_mode
Definition s_set_mo.h:63
INTU4 l_max_nodes
Definition s_set_mo.h:33
INTU4 l_n_frag
Definition s_set_mo.h:94
INTU4 l_swap_lw
Definition s_set_mo.h:32
INTU4 l_rd_pipe_base_addr[MO__N_NODE][MO__N_NODE]
Definition s_set_mo.h:38
INTU4 l_n_ev_buf[MO__N_NODE]
Definition s_set_mo.h:99
INTU4 l_version
Definition s_set_mo.h:30
unsigned int INTU4
Definition typedefs.h:29
char CHARS
Definition typedefs.h:21