Date: Mon, 10 Nov 2008 01:42:47 +0000 (UTC) From: David Xu <davidxu@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org Subject: svn commit: r184806 - in stable/7: include sys/kern sys/sys Message-ID: <200811100142.mAA1glCJ055598@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: davidxu Date: Mon Nov 10 01:42:46 2008 New Revision: 184806 URL: http://svn.freebsd.org/changeset/base/184806 Log: MFC: Add POSIX clock id CLOCK_THREAD_CPUTIME_ID support. Approved by: re (kib) Modified: stable/7/include/time.h stable/7/include/unistd.h stable/7/sys/kern/kern_time.c stable/7/sys/sys/time.h Modified: stable/7/include/time.h ============================================================================== --- stable/7/include/time.h Mon Nov 10 01:24:19 2008 (r184805) +++ stable/7/include/time.h Mon Nov 10 01:42:46 2008 (r184806) @@ -108,6 +108,7 @@ typedef __timer_t timer_t; #define CLOCK_MONOTONIC_PRECISE 11 /* FreeBSD-specific. */ #define CLOCK_MONOTONIC_FAST 12 /* FreeBSD-specific. */ #define CLOCK_SECOND 13 /* FreeBSD-specific. */ +#define CLOCK_THREAD_CPUTIME_ID 14 #endif /* !defined(CLOCK_REALTIME) && __POSIX_VISIBLE >= 200112 */ #if !defined(TIMER_ABSTIME) && __POSIX_VISIBLE >= 200112 Modified: stable/7/include/unistd.h ============================================================================== --- stable/7/include/unistd.h Mon Nov 10 01:24:19 2008 (r184805) +++ stable/7/include/unistd.h Mon Nov 10 01:42:46 2008 (r184806) @@ -111,7 +111,7 @@ typedef __useconds_t useconds_t; #define _POSIX_SPIN_LOCKS 200112L #define _POSIX_THREAD_ATTR_STACKADDR 200112L #define _POSIX_THREAD_ATTR_STACKSIZE 200112L -#define _POSIX_THREAD_CPUTIME -1 +#define _POSIX_THREAD_CPUTIME 200112L #define _POSIX_THREAD_PRIO_INHERIT 200112L #define _POSIX_THREAD_PRIO_PROTECT 200112L #define _POSIX_THREAD_PRIORITY_SCHEDULING 200112L Modified: stable/7/sys/kern/kern_time.c ============================================================================== --- stable/7/sys/kern/kern_time.c Mon Nov 10 01:24:19 2008 (r184805) +++ stable/7/sys/kern/kern_time.c Mon Nov 10 01:42:46 2008 (r184806) @@ -201,6 +201,7 @@ kern_clock_gettime(struct thread *td, cl { struct timeval sys, user; struct proc *p; + uint64_t runtime, curtime, switchtime; p = td->td_proc; switch (clock_id) { @@ -242,6 +243,16 @@ kern_clock_gettime(struct thread *td, cl ats->tv_sec = time_second; ats->tv_nsec = 0; break; + case CLOCK_THREAD_CPUTIME_ID: + critical_enter(); + switchtime = PCPU_GET(switchtime); + curtime = cpu_ticks(); + runtime = td->td_runtime; + critical_exit(); + runtime = cputick2usec(runtime + curtime - switchtime); + ats->tv_sec = runtime / 1000000; + ats->tv_nsec = runtime % 1000000 * 1000; + break; default: return (EINVAL); } Modified: stable/7/sys/sys/time.h ============================================================================== --- stable/7/sys/sys/time.h Mon Nov 10 01:24:19 2008 (r184805) +++ stable/7/sys/sys/time.h Mon Nov 10 01:42:46 2008 (r184806) @@ -246,6 +246,7 @@ struct clockinfo { #define CLOCK_MONOTONIC_PRECISE 11 /* FreeBSD-specific. */ #define CLOCK_MONOTONIC_FAST 12 /* FreeBSD-specific. */ #define CLOCK_SECOND 13 /* FreeBSD-specific. */ +#define CLOCK_THREAD_CPUTIME_ID 14 #endif #ifndef TIMER_ABSTIME
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200811100142.mAA1glCJ055598>