kernel_stats.hh (2680:246e7104f744) | kernel_stats.hh (2716:b9114064d77a) |
---|---|
1/* 2 * Copyright (c) 2004-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; --- 33 unchanged lines hidden (view full) --- 42class BaseCPU; 43class ThreadContext; 44class FnEvent; 45// What does kernel stats expect is included? 46class System; 47 48namespace Kernel { 49 | 1/* 2 * Copyright (c) 2004-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; --- 33 unchanged lines hidden (view full) --- 42class BaseCPU; 43class ThreadContext; 44class FnEvent; 45// What does kernel stats expect is included? 46class System; 47 48namespace Kernel { 49 |
50enum cpu_mode { kernel, user, idle, interrupt, cpu_mode_num }; | 50enum cpu_mode { kernel, user, idle, cpu_mode_num }; |
51extern const char *modestr[]; 52 | 51extern const char *modestr[]; 52 |
53class Binning 54{ 55 private: 56 std::string myname; 57 System *system; 58 59 private: 60 // lisa's binning stuff 61 struct fnCall 62 { 63 Stats::MainBin *myBin; 64 std::string name; 65 }; 66 67 struct SWContext 68 { 69 Counter calls; 70 std::stack<fnCall *> callStack; 71 }; 72 73 std::map<const std::string, Stats::MainBin *> fnBins; 74 std::map<const Addr, SWContext *> swCtxMap; 75 76 std::multimap<const std::string, std::string> callerMap; 77 void populateMap(std::string caller, std::string callee); 78 79 std::vector<FnEvent *> fnEvents; 80 81 Stats::Scalar<> fnCalls; 82 83 Stats::MainBin *getBin(const std::string &name); 84 bool findCaller(std::string, std::string) const; 85 86 SWContext *findContext(Addr pcb); 87 bool addContext(Addr pcb, SWContext *ctx) 88 { 89 return (swCtxMap.insert(std::make_pair(pcb, ctx))).second; 90 } 91 92 void remContext(Addr pcb) 93 { 94 swCtxMap.erase(pcb); 95 } 96 97 void dumpState() const; 98 99 SWContext *swctx; 100 std::vector<std::string> binned_fns; 101 102 private: 103 Stats::MainBin *modeBin[cpu_mode_num]; 104 105 public: 106 const bool bin; 107 const bool fnbin; 108 109 cpu_mode themode; 110 void palSwapContext(ThreadContext *tc); 111 void execute(ThreadContext *tc, StaticInstPtr inst); 112 void call(ThreadContext *tc, Stats::MainBin *myBin); 113 void changeMode(cpu_mode mode); 114 115 public: 116 Binning(System *sys); 117 virtual ~Binning(); 118 119 const std::string name() const { return myname; } 120 void regStats(const std::string &name); 121 122 public: 123 virtual void serialize(std::ostream &os); 124 virtual void unserialize(Checkpoint *cp, const std::string §ion); 125}; 126 | |
127class Statistics : public Serializable 128{ 129 private: | 53class Statistics : public Serializable 54{ 55 private: |
130 friend class Binning; 131 132 private: | |
133 std::string myname; 134 135 Addr idleProcess; 136 cpu_mode themode; 137 Tick lastModeTick; | 56 std::string myname; 57 58 Addr idleProcess; 59 cpu_mode themode; 60 Tick lastModeTick; |
138 bool bin_int; | |
139 140 void changeMode(cpu_mode newmode, ThreadContext *tc); 141 142 private: 143 Stats::Scalar<> _arm; 144 Stats::Scalar<> _quiesce; 145 Stats::Scalar<> _ivlb; 146 Stats::Scalar<> _ivle; --- 49 unchanged lines hidden --- | 61 62 void changeMode(cpu_mode newmode, ThreadContext *tc); 63 64 private: 65 Stats::Scalar<> _arm; 66 Stats::Scalar<> _quiesce; 67 Stats::Scalar<> _ivlb; 68 Stats::Scalar<> _ivle; --- 49 unchanged lines hidden --- |