Lines Matching refs:vtime
683 static u64 vtime_delta(struct vtime *vtime) in vtime_delta() argument
688 if (clock < vtime->starttime) in vtime_delta()
691 return clock - vtime->starttime; in vtime_delta()
694 static u64 get_vtime_delta(struct vtime *vtime) in get_vtime_delta() argument
696 u64 delta = vtime_delta(vtime); in get_vtime_delta()
707 WARN_ON_ONCE(vtime->state == VTIME_INACTIVE); in get_vtime_delta()
708 vtime->starttime += delta; in get_vtime_delta()
714 struct vtime *vtime) in __vtime_account_system() argument
716 vtime->stime += get_vtime_delta(vtime); in __vtime_account_system()
717 if (vtime->stime >= TICK_NSEC) { in __vtime_account_system()
718 account_system_time(tsk, irq_count(), vtime->stime); in __vtime_account_system()
719 vtime->stime = 0; in __vtime_account_system()
724 struct vtime *vtime) in vtime_account_guest() argument
726 vtime->gtime += get_vtime_delta(vtime); in vtime_account_guest()
727 if (vtime->gtime >= TICK_NSEC) { in vtime_account_guest()
728 account_guest_time(tsk, vtime->gtime); in vtime_account_guest()
729 vtime->gtime = 0; in vtime_account_guest()
735 struct vtime *vtime = &tsk->vtime; in vtime_account_system() local
737 if (!vtime_delta(vtime)) in vtime_account_system()
740 write_seqcount_begin(&vtime->seqcount); in vtime_account_system()
743 vtime_account_guest(tsk, vtime); in vtime_account_system()
745 __vtime_account_system(tsk, vtime); in vtime_account_system()
746 write_seqcount_end(&vtime->seqcount); in vtime_account_system()
751 struct vtime *vtime = &tsk->vtime; in vtime_user_enter() local
753 write_seqcount_begin(&vtime->seqcount); in vtime_user_enter()
754 __vtime_account_system(tsk, vtime); in vtime_user_enter()
755 vtime->state = VTIME_USER; in vtime_user_enter()
756 write_seqcount_end(&vtime->seqcount); in vtime_user_enter()
761 struct vtime *vtime = &tsk->vtime; in vtime_user_exit() local
763 write_seqcount_begin(&vtime->seqcount); in vtime_user_exit()
764 vtime->utime += get_vtime_delta(vtime); in vtime_user_exit()
765 if (vtime->utime >= TICK_NSEC) { in vtime_user_exit()
766 account_user_time(tsk, vtime->utime); in vtime_user_exit()
767 vtime->utime = 0; in vtime_user_exit()
769 vtime->state = VTIME_SYS; in vtime_user_exit()
770 write_seqcount_end(&vtime->seqcount); in vtime_user_exit()
775 struct vtime *vtime = &tsk->vtime; in vtime_guest_enter() local
783 write_seqcount_begin(&vtime->seqcount); in vtime_guest_enter()
784 __vtime_account_system(tsk, vtime); in vtime_guest_enter()
786 write_seqcount_end(&vtime->seqcount); in vtime_guest_enter()
792 struct vtime *vtime = &tsk->vtime; in vtime_guest_exit() local
794 write_seqcount_begin(&vtime->seqcount); in vtime_guest_exit()
795 vtime_account_guest(tsk, vtime); in vtime_guest_exit()
797 write_seqcount_end(&vtime->seqcount); in vtime_guest_exit()
803 account_idle_time(get_vtime_delta(&tsk->vtime)); in vtime_account_idle()
808 struct vtime *vtime = &prev->vtime; in arch_vtime_task_switch() local
810 write_seqcount_begin(&vtime->seqcount); in arch_vtime_task_switch()
811 vtime->state = VTIME_INACTIVE; in arch_vtime_task_switch()
812 write_seqcount_end(&vtime->seqcount); in arch_vtime_task_switch()
814 vtime = ¤t->vtime; in arch_vtime_task_switch()
816 write_seqcount_begin(&vtime->seqcount); in arch_vtime_task_switch()
817 vtime->state = VTIME_SYS; in arch_vtime_task_switch()
818 vtime->starttime = sched_clock(); in arch_vtime_task_switch()
819 write_seqcount_end(&vtime->seqcount); in arch_vtime_task_switch()
824 struct vtime *vtime = &t->vtime; in vtime_init_idle() local
828 write_seqcount_begin(&vtime->seqcount); in vtime_init_idle()
829 vtime->state = VTIME_SYS; in vtime_init_idle()
830 vtime->starttime = sched_clock(); in vtime_init_idle()
831 write_seqcount_end(&vtime->seqcount); in vtime_init_idle()
837 struct vtime *vtime = &t->vtime; in task_gtime() local
845 seq = read_seqcount_begin(&vtime->seqcount); in task_gtime()
848 if (vtime->state == VTIME_SYS && t->flags & PF_VCPU) in task_gtime()
849 gtime += vtime->gtime + vtime_delta(vtime); in task_gtime()
851 } while (read_seqcount_retry(&vtime->seqcount, seq)); in task_gtime()
863 struct vtime *vtime = &t->vtime; in task_cputime() local
874 seq = read_seqcount_begin(&vtime->seqcount); in task_cputime()
880 if (vtime->state == VTIME_INACTIVE || is_idle_task(t)) in task_cputime()
883 delta = vtime_delta(vtime); in task_cputime()
889 if (vtime->state == VTIME_USER || t->flags & PF_VCPU) in task_cputime()
890 *utime += vtime->utime + delta; in task_cputime()
891 else if (vtime->state == VTIME_SYS) in task_cputime()
892 *stime += vtime->stime + delta; in task_cputime()
893 } while (read_seqcount_retry(&vtime->seqcount, seq)); in task_cputime()