Skip site navigation (1)Skip section navigation (2)
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: <http://docs.FreeBSD.org/cgi/mid.cgi?201307121850.r6CIo1Hw072153>