Rev 197 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 195 | f9daq | 1 | /* |
| 2 | * gettimeofday.c |
||
| 3 | * Win32 gettimeofday() replacement |
||
| 4 | * |
||
| 5 | * src/port/gettimeofday.c |
||
| 6 | * |
||
| 7 | * Copyright (c) 2003 SRA, Inc. |
||
| 8 | * Copyright (c) 2003 SKC, Inc. |
||
| 9 | * |
||
| 10 | * Permission to use, copy, modify, and distribute this software and |
||
| 11 | * its documentation for any purpose, without fee, and without a |
||
| 12 | * written agreement is hereby granted, provided that the above |
||
| 13 | * copyright notice and this paragraph and the following two |
||
| 14 | * paragraphs appear in all copies. |
||
| 15 | * |
||
| 16 | * IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, |
||
| 17 | * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING |
||
| 18 | * LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS |
||
| 19 | * DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED |
||
| 20 | * OF THE POSSIBILITY OF SUCH DAMAGE. |
||
| 21 | * |
||
| 22 | * THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT |
||
| 23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||
| 24 | * A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS |
||
| 25 | * IS" BASIS, AND THE AUTHOR HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, |
||
| 26 | * SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. |
||
| 27 | */ |
||
| 28 | |||
| 29 | //#include "c.h" |
||
| 30 | #include <windows.h> |
||
| 31 | #include <time.h> |
||
| 32 | |||
| 33 | |||
| 34 | /* FILETIME of Jan 1 1970 00:00:00. */ |
||
| 35 | static const unsigned __int64 epoch = ((unsigned __int64) 116444736000000000ULL); |
||
| 36 | |||
| 37 | /* |
||
| 38 | * timezone information is stored outside the kernel so tzp isn't used anymore. |
||
| 39 | * |
||
| 40 | * Note: this function is not for Win32 high precision timing purpose. See |
||
| 41 | * elapsed_time(). |
||
| 42 | */ |
||
| 43 | int gettimeofday(struct timeval * tp, struct timezone * tzp){ |
||
| 44 | FILETIME file_time; |
||
| 45 | SYSTEMTIME system_time; |
||
| 46 | ULARGE_INTEGER ularge; |
||
| 47 | |||
| 48 | GetSystemTime(&system_time); |
||
| 49 | SystemTimeToFileTime(&system_time, &file_time); |
||
| 50 | ularge.LowPart = file_time.dwLowDateTime; |
||
| 51 | ularge.HighPart = file_time.dwHighDateTime; |
||
| 52 | |||
| 53 | tp->tv_sec = (long) ((ularge.QuadPart - epoch) / 10000000L); |
||
| 54 | tp->tv_usec = (long) (system_time.wMilliseconds * 1000); |
||
| 55 | |||
| 56 | return 0; |
||
| 57 | } |