Changeset 3623 in Sophya for trunk/AddOn/TAcq/racqumem.cc
- Timestamp:
- May 22, 2009, 9:59:38 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/racqumem.cc
r3538 r3623 8 8 9 9 RAcqMemZoneMgr::RAcqMemZoneMgr(uint_4 nz, uint_4 np, uint_4 psz) 10 : 10 : mex(true), nzones(nz), npaq(np), paqsz(psz), stop_(false) 11 11 { 12 12 St_MemZ st; 13 13 14 st.act = (uint_4)MemZA_None; 14 15 st.stat = (uint_8)MemZS_Free; … … 16 17 uint_8 mzsz = npaq*paqsz; 17 18 18 for(int k=0; k<NbZones(); k++) { 19 memzones.push_back(new Byte[mzsz] ); 20 states.push_back(st); 21 } 19 for(int k=0; k<NbZones(); k++) { 20 memzones.push_back(new Byte[mzsz] ); 21 states.push_back(st); 22 } 23 22 24 } 23 25 … … 34 36 mex.lock(); 35 37 while ((rid < 0)&&(!stop_)) { 36 switch (act) { 37 case MemZA_Fill: 38 for(int k=0; k<NbZones(); k++) { 39 if ((states[k].act == MemZA_None) && 40 ((states[k].stat == MemZS_Free)||(states[k].stat & MemZS_Saved)) ) 41 rid = k; break; 42 } 43 if (rid >= 0) { states[rid].act = MemZA_Fill; states[rid].stat = MemZS_Free; } 44 break; 45 case MemZA_Save: 46 for(int k=0; k<NbZones(); k++) { 47 if ((states[k].act == MemZA_None) && (states[k].stat & MemZS_Filled) && 48 !(states[k].stat & MemZS_Saved) ) rid = k; break; 49 } 50 if (rid >= 0) states[rid].act = MemZA_Save; 51 break; 52 case MemZA_Proc: 53 for(int k=0; k<NbZones(); k++) { 54 if ((states[k].act == MemZA_None) && (states[k].stat & MemZS_Filled) && 55 !(states[k].stat & MemZS_Proc) ) rid = k; break; 56 } 57 if (rid >= 0) states[rid].act = MemZA_Proc; 58 break; 59 } 60 if (rid < 0) mex.wait(); 38 switch (act) 39 { 40 case MemZA_Fill: 41 if (rid < 0) for(uint_4 k=0; k<NbZones(); k++) { 42 if ((states[k].act == MemZA_None) && 43 ((states[k].stat == MemZS_Free)||(states[k].stat & MemZS_Saved)) ) 44 { rid = k; break; } 45 } 46 if (rid >= 0) { states[rid].act = MemZA_Fill; states[rid].stat = MemZS_Free; } 47 break; 48 case MemZA_Save: 49 for(uint_4 k=0; k<NbZones(); k++) { 50 if ((states[k].act == MemZA_None) && (states[k].stat & MemZS_Filled) && 51 !(states[k].stat & MemZS_Saved) ) { rid = k; break; } 52 } 53 if (rid >= 0) states[rid].act = MemZA_Save; 54 break; 55 case MemZA_Proc: 56 for(uint_4 k=0; k<NbZones(); k++) { 57 if ((states[k].act == MemZA_None) && (states[k].stat & MemZS_Filled) && 58 !(states[k].stat & MemZS_Proc) ) { rid = k; break; } 59 } 60 if (rid >= 0) states[rid].act = MemZA_Proc; 61 break; 62 case MemZA_None: // MTQ pour supprimer un warning 63 break; 64 } 65 if (rid < 0) mex.wait(); 61 66 } 62 67 mex.unlock(); … … 66 71 int RAcqMemZoneMgr::FreeMemZone(int id, MemZStatus st) 67 72 { 68 if ((id < 0) || (id >= states.size())) return 1;73 if ((id < 0) || (id >= (int)states.size())) return 1; 69 74 int rc = 0; 70 75 mex.lock(); … … 114 119 os << "RAcqMemZoneMgr::Print() NbZones=" << NbZones() << " PaqSize()=" << PaqSize() 115 120 << " NbPaquets()=" << NbPaquets() << " ZoneSize()=" << ZoneSize() << endl; 116 for( intk=0; k<states.size(); k++)121 for(uint_4 k=0; k<states.size(); k++) 117 122 os << " [" << k << "] Act=" << states[k].act << " Stat=" << states[k].stat 118 123 << " NbAct[0..2]=" << states[k].nbact[0] << "," << states[k].nbact[1] … … 123 128 void RAcqMemZoneMgr::Stop() 124 129 { 130 // cout << "RAcqMemZoneMgr::Stop() ........ STOP BROADCAST" <<endl; 125 131 stop_ = true; 126 132 mex.broadcast();
Note:
See TracChangeset
for help on using the changeset viewer.