Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

s_set_mo.h

Go to the documentation of this file.
00001 //-------------------------------------------------------------
00002 //        Go4 Release Package v3.04-01 (build 30401)
00003 //                      28-November-2008
00004 //---------------------------------------------------------------
00005 //   The GSI Online Offline Object Oriented (Go4) Project
00006 //   Experiment Data Processing at EE department, GSI
00007 //---------------------------------------------------------------
00008 //
00009 //Copyright (C) 2000- Gesellschaft f. Schwerionenforschung, GSI
00010 //                    Planckstr. 1, 64291 Darmstadt, Germany
00011 //Contact:            http://go4.gsi.de
00012 //----------------------------------------------------------------
00013 //This software can be used under the license agreements as stated
00014 //in Go4License.txt file which is part of the distribution.
00015 //----------------------------------------------------------------
00016 /*
00017  * N.Kurz 8-Jun-1998
00018  *
00019  * within this structure the setup information for a   n # m
00020  * (multiple output/collector) mbs system is specified
00021  */
00022 
00023 #include "typedefs.h"
00024 #include "mo_def.h"
00025 
00026 typedef struct
00027 {
00028   INTU4 l_endian;                 /* must be 1 */
00029   INTU4 l_version;                /* structure version */
00030   INTU4 l_set_mo_lw;              /* length of structure */
00031   INTU4 l_swap_lw;                /* longwords to be swapped */
00032   INTU4 l_max_nodes;              /* set to MO__N_NODE */
00033   INTU4 l_no_senders;             /* actual number of senders */
00034   INTU4 l_no_receivers;           /* actual number of receivers */
00035   INTU4 bl_dr_active[MO__N_NODE]; /* active receivers */
00036 
00037   INTU4 l_rd_pipe_base_addr [MO__N_NODE] [MO__N_NODE];
00038   /* base addresses of all pipes residing on the ds nodes seen remote    */
00039   /* from dr nodes  l_rd_pipe_base_addr[dr_node_id][ds_node_id].         */
00040   /* this setup parametes are only  necessary for an address mapped      */
00041   /* transfer mode (l_trans_mode = 0).                                   */
00042   INTU4 l_rd_pipe_seg_len [MO__N_NODE];
00043   /* size of pipe segments on ds nodes. index is ds id. this information */
00044   /* is only necessary if transfer type 0 (single shot data transfer)    */
00045   /* from any of the ds nodes. !!!! WARNING !!!! this information is     */
00046   /* redundant. the size is also specified in the setup.usf or           */
00047   /* set_ml.usf of the ds node and must match.                           */
00048   INTU4 l_rd_pipe_trans_mode [MO__N_NODE] [MO__N_NODE];
00049   /* data transfer mode from ds nodes to dr nodes                            */
00050   /* l_rd_pipe_base_addr[dr_node_id][ds_node_id].                        */
00051   /* transfer mode: 0xxx = address mapped, dr reads data                 */
00052   /*                1xxx = message oriented mode ( tcp ), ds sends data  */
00053   /*                01xx = address mapped DMA modes (various)            */
00054   /*                                                                     */
00055   /*              0x   0 = standard singe cycle address mapped           */
00056   /*              0x 101 = VME DMA E7                                    */
00057   /*              0x 102 = VME DMA RIO2 <- RIO2                          */
00058   /*              0x 103 = VSB DMA RIO2 <- "any" VSB slave device        */
00059   /*              0x 104 = PVIC DMA RIO2                                 */
00060   /*              0x 105 = VME DMA RIO2 <- E7 / VME memory               */
00061   /*              0x1001 = TCP sockets                                   */
00062   INTU4 l_form_mode;
00063   /* two format modes have been forseen, whereas only mode 1 is imple-   */
00064   /* mented yet.                                                         */
00065   /* mode 1: ds node sends data, or dr node reads data (depending on     */
00066   /*         transfer type) to an intermediate event buffer of size      */
00067   /*         l_max_evt_size. formatting, and possible byte swapping is   */
00068   /*         done afterwards from the intermediate event buffer into the */
00069   /*         streams.                                                    */
00070   /* mode 2: ds node sends data, or dr node reads data and formats       */
00071   /*         immediately into the streams. not yet implemented           */
00072   INTU4 l_base_addr_evt_buf[MO__N_NODE];
00073   /* if l_form_mode = 1:       (intermediate formatting)                 */
00074   /* for transfer types where address mapped writing from ds node or dma */
00075   /* data transfer is done a shared segement is needed and created with  */
00076   /* physical base address l_base_addr_evt_buf and size l_max_evt_size.  */
00077   /* if l_form_mode = 2:       (direct formatting)                       */
00078   /* a shared segment for this buffer must also be created for           */
00079   /* direct formatting into streams if the ds node writes address mapped */
00080   /* or dma is done. this buffer will be used to hold an event if the    */
00081   /* actual stream has less space than l_max_evt_size since in this mode */
00082   /* the actual event size is not known before the transfer of the last  */
00083   /* fraction.                                                           */
00084   /*                                                                     */
00085   /* if l_base_addr_evt_buf != 0 an smem_create segment will be created  */
00086   /* if l_base_addr_evt_buf  = 0 ( or not specified) a buffer of size    */
00087   /* l_max_evt_size will be created with malloc and is therefore not     */
00088   /* contigious in the address space.                                    */
00089   /* MO__N_NODE runs over dr node ids.                                   */
00090   INTU4 l_max_evt_size;
00091   /* TOTAL maximum event size, which could occur within this setup.      */
00092   /* in bytes.                                                           */
00093   INTU4 l_n_frag;
00094   /* many subevents/fragments can be send/read in one transfer (i.e.     */
00095   /* tcp, vme block transfer) from m_ds to m_dr if the data is conscu-   */
00096   /* tive. l_n_frag specifies the number fragments sent in such a packet */
00097   INTU4 l_ev_buf_len [MO__N_NODE];
00098   INTU4 l_n_ev_buf [MO__N_NODE];
00099   INTU4 l_n_stream [MO__N_NODE];
00100   INTU4 l_base_addr_stream_seg [MO__N_NODE];
00101   /* only nedded if l_form mode = 2. see explanation above               */
00102   INTU4 l_out_mode [MO__N_NODE];
00103   CHARS c_ds_hostname [MO__N_NODE][16];
00104   /* name of ds nodes */
00105   CHARS c_dr_hostname [MO__N_NODE][16];
00106   /* name of dr nodes */
00107 
00108 } s_set_mo;
00109 
00110 //----------------------------END OF GO4 SOURCE FILE ---------------------

Generated on Fri Nov 28 12:59:33 2008 for Go4-v3.04-1 by  doxygen 1.4.2