Date: Fri, 12 Jul 2013 18:50:01 GMT From: Konstantin Belousov <kostikbel@gmail.com> To: freebsd-threads@FreeBSD.org Subject: Re: threads/180496: clock_gettime() does not return CPU-time for zombie processes Message-ID: <201307121850.r6CIo1Hw072153@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR threads/180496; it has been noted by GNATS. From: Konstantin Belousov <kostikbel@gmail.com> To: Petr Salinger <Petr.Salinger@seznam.cz> Cc: freebsd-gnats-submit@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); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201307121850.r6CIo1Hw072153>