mirror of
				https://github.com/python/cpython.git
				synced 2025-10-26 11:14:33 +00:00 
			
		
		
		
	 6fc4ade2bb
			
		
	
	
		6fc4ade2bb
		
	
	
	
	
		
			
			exposed in Python.h. This function is similar to POSIX gettimeofday(struct timeval *tp), but available on platforms without gettimeofday().
		
			
				
	
	
		
			60 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| #include "Python.h"
 | |
| 
 | |
| #ifdef __APPLE__
 | |
| #if defined(HAVE_GETTIMEOFDAY) && defined(HAVE_FTIME)
 | |
|   /*
 | |
|    * _PyTime_gettimeofday falls back to ftime when getttimeofday fails because the latter
 | |
|    * might fail on some platforms. This fallback is unwanted on MacOSX because
 | |
|    * that makes it impossible to use a binary build on OSX 10.4 on earlier
 | |
|    * releases of the OS. Therefore claim we don't support ftime.
 | |
|    */
 | |
| # undef HAVE_FTIME
 | |
| #endif
 | |
| #endif
 | |
| 
 | |
| #ifdef HAVE_FTIME
 | |
| #include <sys/timeb.h>
 | |
| #if !defined(MS_WINDOWS) && !defined(PYOS_OS2)
 | |
| extern int ftime(struct timeb *);
 | |
| #endif /* MS_WINDOWS */
 | |
| #endif /* HAVE_FTIME */
 | |
| 
 | |
| void
 | |
| _PyTime_gettimeofday(_PyTime_timeval *tp)
 | |
| {
 | |
|     /* There are three ways to get the time:
 | |
|       (1) gettimeofday() -- resolution in microseconds
 | |
|       (2) ftime() -- resolution in milliseconds
 | |
|       (3) time() -- resolution in seconds
 | |
|       In all cases the return value in a timeval struct.
 | |
|       Since on some systems (e.g. SCO ODT 3.0) gettimeofday() may
 | |
|       fail, so we fall back on ftime() or time().
 | |
|       Note: clock resolution does not imply clock accuracy! */
 | |
| #ifdef HAVE_GETTIMEOFDAY
 | |
| #ifdef GETTIMEOFDAY_NO_TZ
 | |
|     if (gettimeofday(tp) == 0)
 | |
|         return;
 | |
| #else /* !GETTIMEOFDAY_NO_TZ */
 | |
|     if (gettimeofday(tp, (struct timezone *)NULL) == 0)
 | |
|         return;
 | |
| #endif /* !GETTIMEOFDAY_NO_TZ */
 | |
| #endif /* !HAVE_GETTIMEOFDAY */
 | |
| #if defined(HAVE_FTIME)
 | |
|     {
 | |
|         struct timeb t;
 | |
|         ftime(&t);
 | |
|         tp->tv_sec = t.time;
 | |
|         tp->tv_usec = t.millitm * 1000;
 | |
|     }
 | |
| #else /* !HAVE_FTIME */
 | |
|     tp->tv_sec = time(NULL);
 | |
|     tp->tv_usec = 0;
 | |
| #endif /* !HAVE_FTIME */
 | |
|     return;
 | |
| }
 | |
| 
 | |
| void
 | |
| _PyTime_Init()
 | |
| {
 | |
|     /* Do nothing.  Needed to force linking. */
 | |
| }
 |