Changeset 3683 in Sophya for trunk/AddOn/TAcq/racqumem.h


Ignore:
Timestamp:
Nov 27, 2009, 11:32:46 AM (16 years ago)
Author:
ansari
Message:

Mise a jour et ajout de fichier pour taritement multifibres apres

prise de donnees de Nov2009 a Pittsburgh

  • Introduction des classes BRMultiFitsReader et BRBaseProcessor Reza, 27/11/2009
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/AddOn/TAcq/racqumem.h

    r3658 r3683  
    1111
    1212
    13 #include "machdefs.h"
     13#include "zthread.h"
    1414#include <string>
    1515#include <vector>
    1616#include <iostream>
    17 #include "sopnamsp.h"
    18 #include "zthread.h"
    19 // #include "dmamgrintf.h"
    2017#include "brtypes.h"
    21 #include "pciewrap.h"
     18
    2219using namespace std;
    2320
    24 // Structure de gestion utilisee par la classe RAcqMemMgr
    25 typedef struct {
    26   uint_8 serial;    // Numero de serie permettant d'ordonner en temps les zones memoire rempli
    27   uint_4 act;       // Indique l'action en cours sur une zone Fill,Save ...
    28   uint_4 stat;      // Champ de flag (bits) indiquant les operations effectuees sur la zone
    29   uint_4 nbact[6];  // compteurs nb de fois ou (fill,save,proc,procA/B/C) a ete effectuee sur la zone
    30 //  int tid;        Pas utilise pour le moment, permet l'identification du thread operant sur la zone
    31 } St_MemZ;
    32 
     21//-----------------------------------------------------------------------
     22// Projet BAORadio - (C) LAL/IRFU  2008-2010
     23//  Structures de gestion memoire et synchronisation inter-threads
     24//-----------------------------------------------------------------------
    3325
    3426// Les flags (bits) correspondant aux operations effectuees sur une zone
    35 // Free->libre, Filled->rempli(par DMA), Saved(ecrit sur disque), Proc(Traitement)
    36 // ProcA/B/C : Trois traitement qui doivent s'enchainer
     27// + Free : libre,
     28// + Filled : rempli (par DMA ou lecture fits)
     29// + Saved : ecrit sur disque
     30// + Proc : traite (utilise principalement pour le monitoring durant l'acquisition)
     31// + ProcA/B/C/D/E/F : Un maximum de SIX traitements qui peuvent s'enchainer
     32// + ProcSaved : ecrit sur disque apres traitement
     33
    3734enum MemZStatus { MemZS_Free=0, MemZS_Filled=1, MemZS_Saved=2, MemZS_Proc=4,
    38                   MemZS_ProcA=8, MemZS_ProcB=16, MemZS_ProcC=32 };
    39 // L'action en cours sur une zone
     35                  MemZS_ProcA=8, MemZS_ProcB=16, MemZS_ProcC=32,
     36                  MemZS_ProcD=64, MemZS_ProcE=128, MemZS_ProcF=256,
     37                  MemZS_SavedProc=16384 };
     38
     39// L'action en cours sur une zone (associe aux flags MemZStatus ci-dessus)
    4040enum MemZaction { MemZA_None=0, MemZA_Fill=1, MemZA_Save=2, MemZA_Proc=4,
    41                   MemZA_ProcA=8, MemZA_ProcB=16, MemZA_ProcC=32 };
     41                  MemZA_ProcA=8, MemZA_ProcB=16, MemZA_ProcC=32,
     42                  MemZA_ProcD=64, MemZA_ProcE=128, MemZA_ProcF=256,
     43                  MemZA_SaveProc=16384 };
    4244
    4345// configuration du RAcqMemZoneMgr
     
    4850enum MemZRunState { MemZR_Running=0, MemZR_Waiting=1, MemZR_Stopped=2};
    4951
     52
     53// --------------------------------------------------------------------
     54// Structure de gestion utilisee par la classe RAcqMemMgr
     55#define MXNACTMZM  10
     56typedef struct {
     57  uint_8 serial;    // Numero de serie permettant d'ordonner en temps les zones memoire rempli
     58  uint_4 act;       // Indique l'action en cours sur une zone Fill,Save ...
     59  uint_4 stat;      // Champ de flag (bits) indiquant les operations effectuees sur la zone
     60  uint_4 nbact[MXNACTMZM];  // compteurs nb de fois ou (fill,save,proc,procA/B/C) a ete effectuee sur la zone
     61//  int tid;        Pas utilise pour le moment, permet l'identification du thread operant sur la zone
     62} St_MemZ;
    5063
    5164
     
    91104  inline uint_4 GetFinalizedMask() { return mask_finalized_; }
    92105
    93   // Retourne un MemZone disponible pour une action specifique
     106  // Definit l'etat des operations obligatoires avant qu'une zone
     107  // ne puissent etre sauvee apres traitement (subir l'action ProcSaved)
     108  inline void   SetProcSavedReadyMask(uint_4 mask=((uint_4)MemZS_ProcA))
     109    { mask_saveproc_ready_ = mask; }
     110  inline uint_4 GetProcSavedReadyMask() { return mask_saveproc_ready_; }
     111
     112  // Retourne l'identificateur d'une zone memoire disponible pour une action specifique
    94113  int FindMemZoneId(MemZaction act);
    95114  // Libere une zone memoire en marquant son etat
    96115  int FreeMemZone(int id, MemZStatus st);
    97   // Retourne le pointeur de la zone numero k pour les datas
    98116
    99117  // Retourne le pointeur de la zone numero k pour les datas pour une fibre donnee
     
    120138 
    121139  ostream& Print(ostream& os);
     140  inline ostream& Print() { return Print(cout); }
    122141
     142  // Pour controler l'etat d'execution global
    123143  void Stop();
    124144  inline MemZRunState GetRunState()
     
    131151
    132152  // ... variables membres
    133   ZMutex mex;   
     153  SOPHYA::ZMutex mex;   
    134154  uint_4  nzones, nfibres, npaq, paqsz, procpaqsz;
    135155//  DMAMgrInterface &dma_;
     
    140160  MemZRunState runstate_;
    141161  uint_4 mask_finalized_;
     162  uint_4 mask_saveproc_ready_;
    142163  uint_8 serial_; 
    143164};
Note: See TracChangeset for help on using the changeset viewer.