1/* 2 * Copyright (c) 2003-2005 The Regents of The University of Michigan 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions are 7 * met: redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer;
--- 419 unchanged lines hidden (view full) ---
428} 429 430string 431Formula::str() const 432{ 433 return root ? root->str() : ""; 434} 435
|
436void
437enable()
438{
439 typedef list<Info *>::iterator iter_t;
440
441 iter_t i, end = statsList().end();
442 for (i = statsList().begin(); i != end; ++i) {
443 Info *info = *i;
444 assert(info);
445 if (!info->check() || !info->baseCheck())
446 panic("stat check failed for '%s' %d\n", info->name, info->id);
447 }
448
449 off_t j = 0;
450 for (i = statsList().begin(); i != end; ++i) {
451 Info *info = *i;
452 if (!(info->flags & display))
453 info->name = "__Stat" + to_string(j++);
454 }
455
456 statsList().sort(Info::less);
457
458 for (i = statsList().begin(); i != end; ++i) {
459 Info *info = *i;
460 info->enable();
461 }
462}
463
464void
465prepare()
466{
467 list<Info *>::iterator i = statsList().begin();
468 list<Info *>::iterator end = statsList().end();
469 while (i != end) {
470 Info *info = *i;
471 info->prepare();
472 ++i;
473 }
474}
475
|
436CallbackQueue resetQueue; 437 438void
|
479reset()
480{
481 list<Info *>::iterator i = statsList().begin();
482 list<Info *>::iterator end = statsList().end();
483 while (i != end) {
484 Info *info = *i;
485 info->reset();
486 ++i;
487 }
488
489 resetQueue.process();
490}
491
492void
|
439registerResetCallback(Callback *cb) 440{ 441 resetQueue.add(cb); 442} 443 444} // namespace Stats
|
445 446void 447debugDumpStats() 448{ 449 Stats::dump(); 450} |
|