Changeset 3658 in Sophya for trunk/AddOn/TAcq/racqumem.h
- Timestamp:
- Oct 18, 2009, 11:10:33 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/racqumem.h
r3635 r3658 31 31 } St_MemZ; 32 32 33 33 34 // Les flags (bits) correspondant aux operations effectuees sur une zone 34 35 // Free->libre, Filled->rempli(par DMA), Saved(ecrit sur disque), Proc(Traitement) … … 39 40 enum MemZaction { MemZA_None=0, MemZA_Fill=1, MemZA_Save=2, MemZA_Proc=4, 40 41 MemZA_ProcA=8, MemZA_ProcB=16, MemZA_ProcC=32 }; 42 43 // configuration du RAcqMemZoneMgr 44 enum MemZconfig { MemZConf_SingleFiberDataOnly=0, MemZConf_MultiFiberDataOnly=1, 45 MemZConf_SingleFiberProcDataOnly=2, MemZConf_MultiFiberProcDataOnly=3, 46 MemZConf_SingleFiberDataAndProcData=4, MemZConf_MultiFiberDataAndProcData=5 }; 47 // L'etat d'execution en cours : running, waiting, stopped 48 enum MemZRunState { MemZR_Running=0, MemZR_Waiting=1, MemZR_Stopped=2}; 49 50 41 51 42 52 // ------------------------------------------------------------------- … … 49 59 // Si procpsz>0 , on alloue aussi des zones memoire pour donnees traitees 50 60 // dans ce cas, procpsz à la taille memoire des donnees traites pour chaque paquet 51 RAcqMemZoneMgr(uint_4 nz, uint_4 np=256, uint_4 psz=4096, uint_4 procpsz=0); 61 // Constructeur 1 : l'objet ne contient que les donnees d'une fibre 62 // garde pour maintenir la compatibilite avec version TAcq v <= 6.0 63 RAcqMemZoneMgr(uint_4 nz, uint_4 np, uint_4 psz); 64 // Constructeur 2 : l'objet peut contenir plusieurs fibres, et des donnees processes en plus 65 RAcqMemZoneMgr(uint_4 nzon, uint_4 nfib, uint_4 npaq, uint_4 paqsz, uint_4 procsz=0); 66 52 67 ~RAcqMemZoneMgr(); 53 68 69 // Retourne le nombre de fibres dans chaque zone 70 inline uint_4 NbZones() { return nzones; } 54 71 // Retourne le nombre de zones memoire 55 inline uint_4 Nb Zones() { return nzones; }72 inline uint_4 NbFibres() { return nfibres; } 56 73 // Retourne la taille de paquet 57 74 inline uint_4 PaqSize() { return paqsz; } … … 59 76 inline uint_4 NbPaquets() { return npaq; } 60 77 // Retourne la taille totale d'une zone 61 inline uint_4 ZoneSize() { return npaq*paqsz; } 78 inline uint_4 ZoneSize() { return nfibres*npaq*paqsz; } 79 inline uint_4 OneFiberZoneSize() { return npaq*paqsz; } 62 80 63 81 // Retourne la taille de la zone memoire correspondant aux donnees traitees d'un paquet 64 82 inline uint_4 ProcPaqSize() { return procpaqsz; } 65 83 // Retourne la taille totale d'une zone de donnees traitees 66 inline uint_4 ProcZoneSize() { return npaq*procpaqsz; } 67 84 inline uint_4 ProcZoneSize() { return nfibres*npaq*procpaqsz; } 85 inline uint_4 OneFiberProcZoneSize() { return npaq*procpaqsz; } 86 68 87 // Definit l'etat des operations obligatoires avant qu'une zone 69 88 // remplie ne puisse etre recyclee (re-remplie) … … 76 95 // Libere une zone memoire en marquant son etat 77 96 int FreeMemZone(int id, MemZStatus st); 78 // Retourne le pointeur de la zone numero k 97 // Retourne le pointeur de la zone numero k pour les datas 98 99 // Retourne le pointeur de la zone numero k pour les datas pour une fibre donnee 100 inline Byte* GetMemZone(int id, int fib) { 101 if ((id < 0) || (id >=(int) memzones.size())) return NULL; 102 if ((fib < 0) || (fib >=(int) nfibres)) return NULL; 103 return memzones[id]+fib*OneFiberZoneSize(); 104 } 105 // Retourne le pointeur de la zone numero k pour les resultats de traitement pour une fibre donnee 106 inline Byte* GetProcMemZone(int id, int fib) { 107 if ((id < 0) || (id >=(int) procmemzones.size())) return NULL; 108 return procmemzones[id]+fib*OneFiberProcZoneSize(); 109 } 110 // Retourne le pointeur de la zone numero k pour les datas 79 111 inline Byte* GetMemZone(int id) { 80 112 if ((id < 0) || (id >=(int) memzones.size())) return NULL; 81 113 return memzones[id]; 82 114 } 115 // Retourne le pointeur de la zone numero k pour les resultats de traitement 83 116 inline Byte* GetProcMemZone(int id) { 84 117 if ((id < 0) || (id >=(int) procmemzones.size())) return NULL; … … 87 120 88 121 ostream& Print(ostream& os); 122 89 123 void Stop(); 90 124 inline MemZRunState GetRunState() 125 { return runstate_; } 126 inline MemZRunState ChangeRunState( MemZRunState st) 127 { runstate_ = st; return runstate_; } 128 91 129 protected: 130 void Init(); // Fait l'allocation des differents buffers - est appele par les constructeurs 131 92 132 // ... variables membres 93 133 ZMutex mex; 94 uint_4 nzones, npaq, paqsz, procpaqsz;134 uint_4 nzones, nfibres, npaq, paqsz, procpaqsz; 95 135 // DMAMgrInterface &dma_; 96 136 vector< Byte* > memzones; … … 98 138 vector< Byte* > procmemzones; 99 139 bool stop_; 140 MemZRunState runstate_; 100 141 uint_4 mask_finalized_; 101 142 uint_8 serial_;
Note:
See TracChangeset
for help on using the changeset viewer.