Changeset 1690 in Sophya for trunk/ArchTOIPipe
- Timestamp:
- Oct 14, 2001, 2:30:18 AM (24 years ago)
- Location:
- trunk/ArchTOIPipe/Kernel
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ArchTOIPipe/Kernel/toisegment.cc
r1689 r1690 1 1 #include "toisegment.h" 2 3 #ifndef MAXINT 4 #define MAXINT 2147483647 5 #endif 2 6 3 7 /******************************/ … … 354 358 TOISegmented::BufferView* TOISegmented::MasterView::createView() { /* reader thread */ 355 359 BufferView* bv = new BufferView(this); 360 allViews.insert(bv); 356 361 updateView(bv); 357 362 return bv; … … 371 376 bv->segments.clear(); 372 377 373 // TODO : utiliser firstNeeded de touteles vues pour faire le menage chez378 // utiliser firstNeeded de toutes les vues pour faire le menage chez 374 379 // nous. 375 380 381 int firstNeeded = MAXINT; 382 for (set<BufferView*>::iterator i = allViews.begin(); 383 i != allViews.end(); i++) { 384 if ((*i)->firstNeeded < firstNeeded) firstNeeded = (*i)->firstNeeded; 385 } 386 387 cout << "firstNeeded = " << firstNeeded << endl; 388 389 vector<BufferSegment*>::iterator j = segments.begin(); 390 bool clean = false; 391 for (vector<BufferSegment*>::iterator i = segments.begin(); 392 i != segments.end(); i++) { 393 if (((*i)->sn0+(*i)->bufferSize <= firstNeeded) && ((*i)->getRefCount() == 0)) { 394 clean = true; 395 j = i; 396 } else {} 397 if (clean) { 398 segments.erase(segments.begin(),j); 399 sn0 = (*segments.begin())->sn0; 400 } 401 } 376 402 377 403 for (vector<BufferSegment*>::iterator i = segments.begin(); -
trunk/ArchTOIPipe/Kernel/toisegment.h
r1689 r1690 28 28 virtual void putDone(); 29 29 30 30 // Methodes ignorees car on reimplemente les methodes de base 31 31 virtual DataStatus isDataAvail(int iStart, int iEnd); 32 32 virtual DataStatus isDataAvail(int i); … … 137 137 138 138 set<BufferView*> waitingBuffers; 139 set<BufferView*> allViews; 139 140 140 141 void checkDeadLock();
Note:
See TracChangeset
for help on using the changeset viewer.