|
@@ -155,45 +155,6 @@ static void do_stolen_accounting(void)
|
|
|
account_idle_ticks(ticks);
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * Xen sched_clock implementation. Returns the number of unstolen
|
|
|
- * nanoseconds, which is nanoseconds the VCPU spent in RUNNING+BLOCKED
|
|
|
- * states.
|
|
|
- */
|
|
|
-unsigned long long xen_sched_clock(void)
|
|
|
-{
|
|
|
- struct vcpu_runstate_info state;
|
|
|
- cycle_t now;
|
|
|
- u64 ret;
|
|
|
- s64 offset;
|
|
|
-
|
|
|
- /*
|
|
|
- * Ideally sched_clock should be called on a per-cpu basis
|
|
|
- * anyway, so preempt should already be disabled, but that's
|
|
|
- * not current practice at the moment.
|
|
|
- */
|
|
|
- preempt_disable();
|
|
|
-
|
|
|
- now = xen_clocksource_read();
|
|
|
-
|
|
|
- get_runstate_snapshot(&state);
|
|
|
-
|
|
|
- WARN_ON(state.state != RUNSTATE_running);
|
|
|
-
|
|
|
- offset = now - state.state_entry_time;
|
|
|
- if (offset < 0)
|
|
|
- offset = 0;
|
|
|
-
|
|
|
- ret = state.time[RUNSTATE_blocked] +
|
|
|
- state.time[RUNSTATE_running] +
|
|
|
- offset;
|
|
|
-
|
|
|
- preempt_enable();
|
|
|
-
|
|
|
- return ret;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
/* Get the TSC speed from Xen */
|
|
|
unsigned long xen_tsc_khz(void)
|
|
|
{
|