Deleted Added
sdiff udiff text old ( 11424:e07fd01651f3 ) new ( 11524:3101ce98c55c )
full compact
1/*
2 * Copyright (c) 2015-2016 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software
9 * licensed hereunder. You may use the software subject to the license
10 * terms below provided that you ensure that this notice is replicated

--- 25 unchanged lines hidden (view full) ---

36 *
37 * Authors: Akash Bagdia
38 * David Guillen Fandos
39 */
40
41#include "sim/clocked_object.hh"
42
43#include "base/misc.hh"
44
45void
46ClockedObject::serialize(CheckpointOut &cp) const
47{
48 unsigned int currPwrState = (unsigned int)_currPwrState;
49
50 SERIALIZE_SCALAR(currPwrState);
51 SERIALIZE_SCALAR(prvEvalTick);
52}

--- 14 unchanged lines hidden (view full) ---

67{
68 // Function should ideally be called only when there is a state change
69 if (_currPwrState == p) {
70 warn("ClockedObject: Already in the requested power state, request "\
71 "ignored");
72 return;
73 }
74
75 // No need to compute stats if in the same tick, update state though. This
76 // can happen in cases like a) during start of the simulation multiple
77 // state changes happens in init/startup phase, b) one takes a decision to
78 // migrate state but decides to reverts back to the original state in the
79 // same tick if other conditions are not met elsewhere.
80 // Any state change related stats would have been recorded on previous call
81 // to the pwrState() function.
82 if (prvEvalTick == curTick()) {
83 warn("ClockedObject: More than one power state change request "\
84 "encountered within the same simulation tick");
85 _currPwrState = p;
86 return;
87 }
88
89 // Record stats for previous state.

--- 31 unchanged lines hidden (view full) ---

121 pwrStateResidencyTicks.value(residencies);
122
123 // Account for current state too!
124 Tick elapsed_time = curTick() - prvEvalTick;
125 residencies[_currPwrState] += elapsed_time;
126
127 ret.resize(Enums::PwrState::Num_PwrState);
128 for (unsigned i = 0; i < Enums::PwrState::Num_PwrState; i++)
129 ret[i] = residencies[i] / \
130 (pwrStateResidencyTicks.total() + elapsed_time);
131
132 return ret;
133}
134
135void
136ClockedObject::regStats()
137{

--- 40 unchanged lines hidden ---