/*
 * Called from the timer interrupt handler to charge one tick to the current
 * process.  user_tick is 1 if the tick is user time, 0 for system.
 */
void update_process_times(int user_tick)
{
 struct task_struct *p = current;
 /* Note: this timer irq context must be accounted for as well. */
 account_process_tick(p, user_tick);
 run_local_timers();
 rcu_check_callbacks(user_tick);
#ifdef CONFIG_IRQ_WORK
 if (in_irq())
  irq_work_tick();
#endif
 scheduler_tick();
 run_posix_cpu_timers(p);
}