Changeset 3759 in Sophya for trunk/AddOn/TAcq


Ignore:
Timestamp:
Apr 30, 2010, 11:04:59 PM (15 years ago)
Author:
ansari
Message:

Suite debug des classes PCIEToEthernet et EthernetReader , Reza 30/04/2010

Location:
trunk/AddOn/TAcq
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/AddOn/TAcq/mfacq.cc

    r3758 r3759  
    294294  cout <<"mfacq[2] Creating PCIEToEthernet  thread object " << endl;
    295295  PCIEToEthernet pci2eth(vec_pciw, bpar.GetParams().GetEthTargets(), bpar.GetParams());
     296  pci2eth.SetPrintLevel(1);
    296297  //  usleep(200);  attente au cas ou ...
    297298  pPcie2Eth=&pci2eth;
  • trunk/AddOn/TAcq/racqueth.cc

    r3758 r3759  
    5959  }
    6060  totrdsnd_ = 0;
     61  SetEthSendBlockSize();
     62  SetPrintLevel();
    6163}
    6264
     
    149151    // Byte* nextdma = locdata+((kmz%memgr.NbZones())*(paqsz*memgr.NbPaquets()));
    150152  uint_4 npaqfaitg = 0;
     153  uint_4 prtmod = par_.BlocPerFile()*par_.MMgrNbPaquet();
     154  if (prtmod < 500) prtmod=500;
     155
    151156  while (npaqfaitg < nmaxpaq_) {  // Boucle global G
    152157    if (fgarret) break;
     
    171176    }
    172177    if (fgbaddma) continue; 
    173 
     178    if ((prtlev_>0)&&(npaqfaitg%prtmod==0))
     179      cout << " PCIEToEthernet::run()/Info NPaqFait= " << npaqfaitg << endl;
    174180    if (fgdirectsend) {  // Pas de copie / reduction de taille de paquet, on rebalance tel quel ...
    175181      for (int fib=0; fib<(int) nbDma_ ;fib++) {
     
    306312size_t PCIEToEthernet::SendToTargets(int fib, Byte* data, size_t len)
    307313{
    308   //DBG   cout << " SendToTargets/DBG" << cnt_prt << " len=" << len << " data=" << hex << (unsigned long)data << dec << endl; cnt_prt++;
     314  //  cout << " SendToTargets/DBG" << cnt_prt << " len=" << len << " data=" << hex << (unsigned long)data << dec << endl; cnt_prt++;
    309315  vector<ClientSocket>& vskt = vvec_skt_[fib];
    310316  size_t rc=0;
    311   for(size_t j=0; j<vskt.size(); j++) {
    312     rc += vskt[j].Send((const char *)data, len);
    313     totrdsnd_ += len;
     317  size_t nblk = len/eths_bsz_;
     318  size_t fblk = len%eths_bsz_;
     319  size_t off = 0;
     320  if (nblk>0) {
     321    for(size_t i=0; i<nblk; i++) {
     322      for(size_t j=0; j<vskt.size(); j++) {
     323        rc += vskt[j].Send((const char *)data+off, eths_bsz_);
     324        totrdsnd_ += eths_bsz_;
     325      }
     326      off += eths_bsz_;
     327    }
     328  }
     329  if (fblk>0) {
     330    for(size_t j=0; j<vskt.size(); j++) {
     331      rc += vskt[j].Send((const char *)data+off, fblk);
     332      totrdsnd_ += fblk;
     333    }
    314334  }
    315335  return rc;
     
    323343  :  memgr_(mem), par_(par), stop_(false), rdsamefc_(rdsamefc), tcpportid_(portid)
    324344{
    325   SetPrintLevel();
    326345  totnbytesrd_ = 0;
    327346  totnpaqrd_ = 0;
     
    359378    cout << " EthernetReader/Info connection/link" << fib << " established." << endl;
    360379  }
     380
     381  SetEthRecvBlockSize();
     382  SetPrintLevel();
    361383}
    362384
     
    476498  bool fggood=false;
    477499  while(!fggood) {
    478     vsok_[fib].Receive((char *)vpaq_[fib].Begin(), packsize_);
     500    ReceiveFromSocket(fib, (char *)vpaq_[fib].Begin(), packsize_);
    479501    totnbytesrd_+=packsize_;
    480502    totnpqrd_[fib]++;
     
    483505  totnpqok_[fib]++;
    484506  return false;
     507}
     508
     509/* --Methode-- */
     510size_t EthernetReader::ReceiveFromSocket(int fib, char* data, size_t len)
     511{
     512  size_t nblk = len/ethr_bsz_;
     513  size_t fblk = len%ethr_bsz_;
     514  size_t off = 0;
     515  size_t rc =0;
     516  if (nblk>0) {
     517    for(size_t i=0; i<nblk; i++)  {
     518      rc += vsok_[fib].Receive(data+off, ethr_bsz_);
     519      off += ethr_bsz_; 
     520    }
     521  }
     522  if (fblk>0) {
     523    rc += vsok_[fib].Receive(data+off, fblk);
     524  }
     525  return rc;
    485526}
    486527
  • trunk/AddOn/TAcq/racqueth.h

    r3758 r3759  
    5454  inline void STOP() { stop_ = true; } 
    5555
     56  inline size_t SetEthSendBlockSize(size_t bsz=1024)
     57  { size_t rs=eths_bsz_;  eths_bsz_=bsz; return rs; }
     58  inline int SetPrintLevel(int lev=0) { prtlev_=lev; return 0;}
     59
    5660protected:
    5761  virtual size_t SendToTargets(int fib, Byte* data, size_t len);
     
    7175  uint_4 nbDma_;
    7276  uint_8 totrdsnd_;
    73 
     77  size_t eths_bsz_;
     78  int prtlev_;
    7479};
    7580
     
    8489  inline void STOP() { stop_ = true; } 
    8590
     91  inline size_t SetEthRecvBlockSize(size_t bsz=1024)
     92  { size_t rs=ethr_bsz_;  ethr_bsz_=bsz; return rs; }
    8693  inline int SetPrintLevel(int lev=0) { prtlev_=lev; return 0;}
     94
    8795protected:
    8896  bool ReadNextAllFibers();      // Renvoie true si probleme
    8997  bool ReadNext(int fib);   // Renvoie true si probleme
     98  size_t ReceiveFromSocket(int fib, char* data, size_t len);
     99
    90100  // Permet d'avancer d'un paquet dans la zone - renvoie true si probleme
    91101  inline bool MoveToNextTarget()  {
     
    125135  Byte* mmbufib_[MAXANAFIB];  // Pointeurs zone memoire de chaque fibre rendu par RAcqMemZoneMgr
    126136
     137  size_t ethr_bsz_;
    127138  int prtlev_;
    128139};
Note: See TracChangeset for help on using the changeset viewer.