struct thread_info *ni = task_thread_info(current);
if (idle_task(smp_processor_id()) != prev)
- vtime_account_system(prev);
+ __vtime_account_system(prev);
else
- vtime_account_idle(prev);
+ __vtime_account_idle(prev);
vtime_account_user(prev);
return delta_stime;
}
-void vtime_account_system(struct task_struct *tsk)
+void __vtime_account_system(struct task_struct *tsk)
{
cputime_t delta = vtime_delta(tsk);
account_system_time(tsk, 0, delta, delta);
}
-void vtime_account_idle(struct task_struct *tsk)
+void __vtime_account_idle(struct task_struct *tsk)
{
account_idle_time(vtime_delta(tsk));
}
return delta;
}
-void vtime_account_system(struct task_struct *tsk)
+void __vtime_account_system(struct task_struct *tsk)
{
u64 delta, sys_scaled, stolen;
account_steal_time(stolen);
}
-void vtime_account_idle(struct task_struct *tsk)
+void __vtime_account_idle(struct task_struct *tsk)
{
u64 delta, sys_scaled, stolen;
}
EXPORT_SYMBOL_GPL(vtime_account);
+void __vtime_account_system(struct task_struct *tsk)
+__attribute__((alias("vtime_account")));
+EXPORT_SYMBOL_GPL(__vtime_account_system);
+
void __kprobes vtime_stop_cpu(void)
{
struct s390_idle_data *idle = &__get_cpu_var(s390_idle);
#ifdef CONFIG_VIRT_CPU_ACCOUNTING
extern void vtime_task_switch(struct task_struct *prev);
+extern void __vtime_account_system(struct task_struct *tsk);
extern void vtime_account_system(struct task_struct *tsk);
-extern void vtime_account_idle(struct task_struct *tsk);
+extern void __vtime_account_idle(struct task_struct *tsk);
#else
static inline void vtime_task_switch(struct task_struct *prev) { }
+static inline void vtime_account_system(struct task_struct *tsk) { }
#endif
#if !defined(CONFIG_VIRT_CPU_ACCOUNTING) && !defined(CONFIG_IRQ_TIME_ACCOUNTING)
*st = cputime.stime;
}
+void vtime_account_system(struct task_struct *tsk)
+{
+ unsigned long flags;
+
+ local_irq_save(flags);
+ __vtime_account_system(tsk);
+ local_irq_restore(flags);
+}
+EXPORT_SYMBOL_GPL(vtime_account_system);
+
/*
* Archs that account the whole time spent in the idle task
* (outside irq) as idle time can rely on this and just implement
- * vtime_account_system() and vtime_account_idle(). Archs that
+ * __vtime_account_system() and __vtime_account_idle(). Archs that
* have other meaning of the idle time (s390 only includes the
* time spent by the CPU when it's in low power mode) must override
* vtime_account().
local_irq_save(flags);
if (in_interrupt() || !is_idle_task(tsk))
- vtime_account_system(tsk);
+ __vtime_account_system(tsk);
else
- vtime_account_idle(tsk);
+ __vtime_account_idle(tsk);
local_irq_restore(flags);
}