#include #include #include #include #include #include "libC.h" SRCFILE(__FILE__) class PadStats : public PadRcv { Pad *pad; void abort(); void allocfree(); void cachestats(); void exit(); void sbrk0(); void sf0(); void traffic(); public: PadStats(); }; void NewPadStats() { new PadStats; } void PadStats::abort() { ::abort(); } void PadStats::exit() { ::exit(0); } PadStats::PadStats(){ Menu m; pad = new Pad( (PadRcv*) this ); pad->banner( "PadStats:" ); pad->name( "stats" ); m.sort( "abort()?", (Action)&PadStats::abort ); m.sort( "allocfree()", (Action)&PadStats::allocfree ); m.sort( "cachestats()", (Action)&PadStats::cachestats ); m.sort( "exit(0)?", (Action)&PadStats::exit ); m.sort( "sbrk(0)", (Action)&PadStats::sbrk0 ); m.sort( "sf(0)", (Action)&PadStats::sf0 ); m.sort( "traffic()", (Action)&PadStats::traffic ); pad->menu(m); } void PadStats::cachestats(){ char *CacheStats(); pad->insert(1, SELECTLINE, CacheStats()); } void PadStats::sf0(){ pad->insert(2, SELECTLINE, sf(0)); } void PadStats::sbrk0(){ pad->insert(3, SELECTLINE, "sbrk(0)=%d=0x%X", sbrk(0), sbrk(0)); } void PadStats::traffic(){ extern long BytesToTerm, BytesFromTerm; time_t k = time(0); pad->insert(k, SELECTLINE, "%0.9s h->t=%d t->h=%d", ctime(&k)+11, BytesToTerm, BytesFromTerm); } void PadStats::allocfree(){ char *p; int i; for( i = 0; p = NewDel.profile(i); ++i ) if( *p ) pad->insert( i+10, SELECTLINE, p ); }