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