Changeset 1690 in Sophya for trunk


Ignore:
Timestamp:
Oct 14, 2001, 2:30:18 AM (24 years ago)
Author:
aubourg
Message:

segmentes

Location:
trunk/ArchTOIPipe/Kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ArchTOIPipe/Kernel/toisegment.cc

    r1689 r1690  
    11#include "toisegment.h"
     2
     3#ifndef MAXINT
     4#define MAXINT 2147483647
     5#endif
    26
    37/******************************/
     
    354358TOISegmented::BufferView* TOISegmented::MasterView::createView() { /* reader thread */
    355359  BufferView* bv =  new BufferView(this);
     360  allViews.insert(bv);
    356361  updateView(bv);
    357362  return bv;
     
    371376  bv->segments.clear();
    372377
    373   // TODO : utiliser firstNeeded de toute les vues pour faire le menage chez
     378  // utiliser firstNeeded de toutes les vues pour faire le menage chez
    374379  // 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  }
    376402
    377403  for (vector<BufferSegment*>::iterator i = segments.begin();
  • trunk/ArchTOIPipe/Kernel/toisegment.h

    r1689 r1690  
    2828  virtual void          putDone();
    2929
    30 
     30  // Methodes ignorees car on reimplemente les methodes de base
    3131  virtual DataStatus    isDataAvail(int iStart, int iEnd);
    3232  virtual DataStatus    isDataAvail(int i);
     
    137137
    138138    set<BufferView*>  waitingBuffers;
     139    set<BufferView*>  allViews;
    139140
    140141    void checkDeadLock();
Note: See TracChangeset for help on using the changeset viewer.