PR 53456 CPU timing fallback using clock_gettime.

2012-05-24  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/53456
	* intrinsics/time_1.h (gf_cputime): Fallback for clock_gettime.

From-SVN: r187846
This commit is contained in:
Janne Blomqvist 2012-05-24 23:19:37 +03:00
parent 165ca58dc3
commit 44813fe043
2 changed files with 21 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2012-05-24 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/53456
* intrinsics/time_1.h (gf_cputime): Fallback for clock_gettime.
2012-05-23 Janne Blomqvist <jb@gcc.gnu.org>
PR fortran/53456

View File

@ -1,5 +1,5 @@
/* Wrappers for platform timing functions.
Copyright (C) 2003, 2007, 2009, 2011 Free Software Foundation, Inc.
Copyright (C) 2003, 2007, 2009, 2011, 2012 Free Software Foundation, Inc.
This file is part of the GNU Fortran runtime library (libgfortran).
@ -166,6 +166,21 @@ gf_cputime (long *user_sec, long *user_usec, long *system_sec, long *system_usec
return -1;
return 0;
#elif defined(HAVE_CLOCK_GETTIME) && (defined(CLOCK_PROCESS_CPUTIME_ID) \
|| defined(CLOCK_THREAD_CPUTIME_ID))
/* Newer versions of VxWorks have CLOCK_THREAD_CPUTIME_ID giving
per-thread CPU time. CLOCK_PROCESS_CPUTIME_ID would be better
but is not available. */
#ifndef CLOCK_PROCESS_CPUTIME_ID
#define CLOCK_PROCESS_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID
#endif
struct timespec ts;
int err = clock_gettime (CLOCK_PROCESS_CPUTIME_ID, &ts);
*user_sec = ts.tv_sec;
*user_usecs = ts.tv_nsec / 1000;
*system_sec = *system_usec = 0;
return err;
#else
clock_t c = clock ();
*user_sec = c / CLOCKS_PER_SEC;