50c50
< enum cpu_mode { kernel, user, idle, interrupt, cpu_mode_num };
---
> enum cpu_mode { kernel, user, idle, cpu_mode_num };
53,126d52
< class Binning
< {
< private:
< std::string myname;
< System *system;
<
< private:
< // lisa's binning stuff
< struct fnCall
< {
< Stats::MainBin *myBin;
< std::string name;
< };
<
< struct SWContext
< {
< Counter calls;
< std::stack<fnCall *> callStack;
< };
<
< std::map<const std::string, Stats::MainBin *> fnBins;
< std::map<const Addr, SWContext *> swCtxMap;
<
< std::multimap<const std::string, std::string> callerMap;
< void populateMap(std::string caller, std::string callee);
<
< std::vector<FnEvent *> fnEvents;
<
< Stats::Scalar<> fnCalls;
<
< Stats::MainBin *getBin(const std::string &name);
< bool findCaller(std::string, std::string) const;
<
< SWContext *findContext(Addr pcb);
< bool addContext(Addr pcb, SWContext *ctx)
< {
< return (swCtxMap.insert(std::make_pair(pcb, ctx))).second;
< }
<
< void remContext(Addr pcb)
< {
< swCtxMap.erase(pcb);
< }
<
< void dumpState() const;
<
< SWContext *swctx;
< std::vector<std::string> binned_fns;
<
< private:
< Stats::MainBin *modeBin[cpu_mode_num];
<
< public:
< const bool bin;
< const bool fnbin;
<
< cpu_mode themode;
< void palSwapContext(ThreadContext *tc);
< void execute(ThreadContext *tc, StaticInstPtr inst);
< void call(ThreadContext *tc, Stats::MainBin *myBin);
< void changeMode(cpu_mode mode);
<
< public:
< Binning(System *sys);
< virtual ~Binning();
<
< const std::string name() const { return myname; }
< void regStats(const std::string &name);
<
< public:
< virtual void serialize(std::ostream &os);
< virtual void unserialize(Checkpoint *cp, const std::string &section);
< };
<
130,132d55
< friend class Binning;
<
< private:
138d60
< bool bin_int;