threads/180496: clock_gettime() does not return CPU-time for zombie processes
Konstantin Belousov
kostikbel at gmail.com
Fri Jul 12 18:50:01 UTC 2013
The following reply was made to PR threads/180496; it has been noted by GNATS.
From: Konstantin Belousov <kostikbel at gmail.com>
To: Petr Salinger <Petr.Salinger at seznam.cz>
Cc: freebsd-gnats-submit at FreeBSD.org
Subject: Re: threads/180496: clock_gettime() does not return CPU-time for
zombie processes
Date: Fri, 12 Jul 2013 21:47:43 +0300
Please try this. The clock_gettime() call on zombie clock worked
for me.
Note that the check for clock_getres() on the reapped process clock
failed since we do not check for pid validity, all processes has
the same clock. I do not see much sense in adding the useless check.
diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c
index b68c949..9e0cc06 100644
--- a/sys/kern/kern_time.c
+++ b/sys/kern/kern_time.c
@@ -297,14 +297,9 @@ get_cputime(struct thread *td, clockid_t clock_id, struct timespec *ats)
PROC_UNLOCK(td2->td_proc);
} else {
pid = clock_id & CPUCLOCK_ID_MASK;
- p2 = pfind(pid);
- if (p2 == NULL)
- return (EINVAL);
- error = p_cansee(td, p2);
- if (error) {
- PROC_UNLOCK(p2);
+ error = pget(pid, PGET_CANSEE, &p2);
+ if (error != 0)
return (EINVAL);
- }
get_process_cputime(p2, ats);
PROC_UNLOCK(p2);
}
More information about the freebsd-threads
mailing list