[Mesa-dev] [PATCH] util: use clock_gettime() on PIPE_OS_BSD
Jonathan Gray
jsg at jsg.id.au
Fri Mar 2 07:05:14 UTC 2018
On Wed, Feb 28, 2018 at 08:22:57AM -0700, Brian Paul wrote:
> On 02/28/2018 03:19 AM, Jonathan Gray wrote:
> > OpenBSD, FreeBSD, NetBSD and DragonFlyBSD all have clock_gettime()
> > so use it when PIPE_OS_BSD is defined.
> >
> > Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
> > ---
> > src/util/os_time.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/src/util/os_time.c b/src/util/os_time.c
> > index 72dc7e49c0..ac488b2287 100644
> > --- a/src/util/os_time.c
> > +++ b/src/util/os_time.c
> > @@ -55,7 +55,7 @@
> > int64_t
> > os_time_get_nano(void)
> > {
> > -#if defined(PIPE_OS_LINUX)
> > +#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD)
> > struct timespec tv;
> > clock_gettime(CLOCK_MONOTONIC, &tv);
> >
>
> LGTM.
> Reviewed-by: Brian Paul <brianp at vmware.com>
Thanks, there is also u_thread_get_time_nano(). I tried having autoconf
do AC_CHECK_FUNC for pthread_getcpuclockid() and setting a define
if it was found but couldn't seem to get the pthread linkage in the test
to work properly. So for now in my local tree I have the diff below.
pthread_getcpuclockid() is available on
OpenBSD https://man.openbsd.org/pthread_getcpuclockid
FreeBSD https://www.freebsd.org/cgi/man.cgi?query=pthread_getcpuclockid
NetBSD http://netbsd.gw.com/cgi-bin/man-cgi?pthread_getcpuclockid++NetBSD-current
DragonFly https://leaf.dragonflybsd.org/cgi/web-man?command=pthread_getcpuclockid§ion=ANY
Cygwin https://cygwin.com/cygwin-api/compatibility.html#std-susv4
but not macos and solaris?
diff --git a/src/util/u_thread.h b/src/util/u_thread.h
index 8c6e0bdc59..4f559e5c8f 100644
--- a/src/util/u_thread.h
+++ b/src/util/u_thread.h
@@ -71,21 +71,21 @@ static inline void u_thread_setname( const char *name )
}
/*
* Thread statistics.
*/
/* Return the time of a thread's CPU time clock. */
static inline int64_t
u_thread_get_time_nano(thrd_t thread)
{
-#if defined(__linux__) && defined(HAVE_PTHREAD)
+#if defined(HAVE_PTHREAD)
struct timespec ts;
clockid_t cid;
pthread_getcpuclockid(thread, &cid);
clock_gettime(cid, &ts);
return (int64_t)ts.tv_sec * 1000000000 + ts.tv_nsec;
#else
return 0;
#endif
}
More information about the mesa-dev
mailing list