Changeset 3683 in Sophya for trunk/AddOn/TAcq/racqumem.h
- Timestamp:
- Nov 27, 2009, 11:32:46 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/racqumem.h
r3658 r3683 11 11 12 12 13 #include " machdefs.h"13 #include "zthread.h" 14 14 #include <string> 15 15 #include <vector> 16 16 #include <iostream> 17 #include "sopnamsp.h"18 #include "zthread.h"19 // #include "dmamgrintf.h"20 17 #include "brtypes.h" 21 #include "pciewrap.h" 18 22 19 using namespace std; 23 20 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 //----------------------------------------------------------------------- 33 25 34 26 // 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 37 34 enum 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) 40 40 enum 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 }; 42 44 43 45 // configuration du RAcqMemZoneMgr … … 48 50 enum MemZRunState { MemZR_Running=0, MemZR_Waiting=1, MemZR_Stopped=2}; 49 51 52 53 // -------------------------------------------------------------------- 54 // Structure de gestion utilisee par la classe RAcqMemMgr 55 #define MXNACTMZM 10 56 typedef 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; 50 63 51 64 … … 91 104 inline uint_4 GetFinalizedMask() { return mask_finalized_; } 92 105 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 94 113 int FindMemZoneId(MemZaction act); 95 114 // Libere une zone memoire en marquant son etat 96 115 int FreeMemZone(int id, MemZStatus st); 97 // Retourne le pointeur de la zone numero k pour les datas98 116 99 117 // Retourne le pointeur de la zone numero k pour les datas pour une fibre donnee … … 120 138 121 139 ostream& Print(ostream& os); 140 inline ostream& Print() { return Print(cout); } 122 141 142 // Pour controler l'etat d'execution global 123 143 void Stop(); 124 144 inline MemZRunState GetRunState() … … 131 151 132 152 // ... variables membres 133 ZMutex mex;153 SOPHYA::ZMutex mex; 134 154 uint_4 nzones, nfibres, npaq, paqsz, procpaqsz; 135 155 // DMAMgrInterface &dma_; … … 140 160 MemZRunState runstate_; 141 161 uint_4 mask_finalized_; 162 uint_4 mask_saveproc_ready_; 142 163 uint_8 serial_; 143 164 };
Note:
See TracChangeset
for help on using the changeset viewer.