diff options
author | phk <phk@FreeBSD.org> | 2002-02-22 13:32:01 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2002-02-22 13:32:01 +0000 |
commit | fa959f1afd26bbeab46d956b15e7f7a25a23c30e (patch) | |
tree | e5ecf3d25102e8c345e8b21cabef4d87489b8437 /sys/kern/kern_resource.c | |
parent | 6beb5af66cdd422d033e8a94de23a35073864d0e (diff) | |
download | FreeBSD-src-fa959f1afd26bbeab46d956b15e7f7a25a23c30e.zip FreeBSD-src-fa959f1afd26bbeab46d956b15e7f7a25a23c30e.tar.gz |
Convert p->p_runtime and PCPU(switchtime) to bintime format.
Diffstat (limited to 'sys/kern/kern_resource.c')
-rw-r--r-- | sys/kern/kern_resource.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/sys/kern/kern_resource.c b/sys/kern/kern_resource.c index fb6914f..ffcd488 100644 --- a/sys/kern/kern_resource.c +++ b/sys/kern/kern_resource.c @@ -622,6 +622,7 @@ calcru(p, up, sp, ip) u_int64_t uut = 0, sut = 0, iut = 0; int s; struct timeval tv; + struct bintime bt; struct kse *ke; struct ksegrp *kg; @@ -643,7 +644,6 @@ calcru(p, up, sp, ip) tt = 1; } - tu = p->p_runtime; if (ke == curthread->td_kse) { /* * Adjust for the current time slice. This is actually fairly @@ -652,19 +652,15 @@ calcru(p, up, sp, ip) * XXXKSE use a different test due to threads on other * processors also being 'current'. */ - microuptime(&tv); - if (timevalcmp(&tv, PCPU_PTR(switchtime), <)) - printf("microuptime() went backwards (%ld.%06ld -> %ld.%06ld)\n", - (long)PCPU_GET(switchtime.tv_sec), - PCPU_GET(switchtime.tv_usec), - (long)tv.tv_sec, tv.tv_usec); - else - tu += (tv.tv_usec - - PCPU_GET(switchtime.tv_usec)) - + (tv.tv_sec - - PCPU_GET(switchtime.tv_sec)) - * (int64_t)1000000; + + binuptime(&bt); + bintime_sub(&bt, PCPU_PTR(switchtime)); + bintime_add(&bt, &p->p_runtime); + } else { + bt = p->p_runtime; } + bintime2timeval(&bt, &tv); + tu = tv.tv_sec * (u_int64_t)1000000 + tv.tv_usec; ptu = ke->ke_uu + ke->ke_su + ke->ke_iu; if (tu < ptu || (int64_t)tu < 0) { /* XXX no %qd in kernel. Truncate. */ |