Attachment "tip302.patch" to
ticket [3328635fff]
added by
chw
2016-03-25 08:05:54.
0000: 54 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 70 61 The following pa
0010: 74 63 68 20 61 67 61 69 6e 73 74 20 61 20 73 74 tch against a st
0020: 6f 63 6b 20 74 63 6c 20 38 2e 36 2e 35 20 73 6f ock tcl 8.6.5 so
0030: 75 72 63 65 20 74 72 65 65 20 74 72 69 65 73 20 urce tree tries
0040: 74 6f 0a 69 6d 70 6c 65 6d 65 6e 74 20 6d 6f 73 to.implement mos
0050: 74 20 6f 66 20 54 49 50 20 23 33 30 32 20 66 6f t of TIP #302 fo
0060: 72 20 55 4e 2a 58 20 61 6e 64 20 57 49 4e 33 32 r UN*X and WIN32
0070: 2f 36 34 3a 0a 0a 20 20 2a 20 75 73 65 20 63 6c /64:.. * use cl
0080: 6f 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 ock_gettime(CLOC
0090: 4b 5f 4d 4f 4e 4f 54 4f 4e 49 43 29 20 66 6f 72 K_MONOTONIC) for
00a0: 20 72 65 6c 61 74 69 76 65 20 74 69 6d 69 6e 67 relative timing
00b0: 20 28 55 4e 2a 58 29 0a 20 20 20 20 77 68 65 6e (UN*X). when
00c0: 20 61 76 61 69 6c 61 62 6c 65 20 28 74 65 73 74 available (test
00d0: 65 64 20 61 74 20 72 75 6e 74 69 6d 65 29 0a 20 ed at runtime).
00e0: 20 2a 20 75 73 65 20 50 54 48 52 45 41 44 5f 43 * use PTHREAD_C
00f0: 4f 4e 44 41 54 54 52 5f 53 45 54 43 4c 4f 43 4b ONDATTR_SETCLOCK
0100: 20 65 74 2e 61 6c 2e 20 66 6f 72 20 70 74 68 72 et.al. for pthr
0110: 65 61 64 5f 63 6f 6e 64 20 28 55 4e 2a 58 29 0a ead_cond (UN*X).
0120: 20 20 20 20 77 68 65 6e 20 61 76 61 69 6c 61 62 when availab
0130: 6c 65 20 28 74 65 73 74 65 64 20 61 74 20 72 75 le (tested at ru
0140: 6e 74 69 6d 65 29 0a 20 20 2a 20 75 73 65 20 47 ntime). * use G
0150: 65 74 54 69 63 6b 43 6f 75 6e 74 36 34 28 29 20 etTickCount64()
0160: 66 6f 72 20 72 65 6c 61 74 69 76 65 20 74 69 6d for relative tim
0170: 69 6e 67 20 28 57 49 4e 36 34 29 0a 20 20 2a 20 ing (WIN64). *
0180: 75 73 65 20 47 65 74 54 69 63 6b 43 6f 75 6e 74 use GetTickCount
0190: 28 29 20 66 6f 72 20 72 65 6c 61 74 69 76 65 20 () for relative
01a0: 74 69 6d 69 6e 67 20 28 57 49 4e 33 32 20 66 6f timing (WIN32 fo
01b0: 72 20 57 49 4e 4e 54 3c 36 2e 30 29 0a 20 20 2a r WINNT<6.0). *
01c0: 20 63 6f 6e 66 69 67 75 72 65 20 28 55 4e 2a 58 configure (UN*X
01d0: 29 20 64 65 74 65 63 74 73 20 61 76 61 69 6c 61 ) detects availa
01e0: 62 69 6c 74 79 20 6f 66 20 63 6c 6f 63 6b 5f 67 bilty of clock_g
01f0: 65 74 74 69 6d 65 28 29 20 61 6e 64 0a 20 20 20 ettime() and.
0200: 20 70 74 68 72 65 61 64 5f 63 6f 6e 64 61 74 74 pthread_condatt
0210: 72 5f 73 65 74 63 6c 6f 63 6b 28 29 20 70 6c 75 r_setclock() plu
0220: 73 20 61 64 64 73 20 6f 70 74 69 6f 6e 61 6c 20 s adds optional
0230: 2d 6c 72 74 20 74 6f 20 4c 49 42 53 0a 20 20 2a -lrt to LIBS. *
0240: 20 63 6f 6e 66 69 67 75 72 65 20 28 57 49 4e 33 configure (WIN3
0250: 32 29 20 61 64 64 73 20 63 6f 6d 6d 61 6e 64 20 2) adds command
0260: 6c 69 6e 65 20 6f 70 74 69 6f 6e 20 2d 2d 77 69 line option --wi
0270: 74 68 2d 74 69 63 6b 63 6f 75 6e 74 0a 20 20 20 th-tickcount.
0280: 20 74 6f 20 74 75 72 6e 20 6f 6e 20 47 65 74 54 to turn on GetT
0290: 69 63 6b 43 6f 75 6e 74 2a 28 29 20 75 73 61 67 ickCount*() usag
02a0: 65 0a 0a 54 72 61 64 65 2d 6f 66 66 3a 20 69 6d e..Trade-off: im
02b0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 65 6c 69 plementation eli
02c0: 6d 69 6e 61 74 65 73 20 76 69 72 74 75 61 6c 69 minates virtuali
02d0: 7a 65 64 20 74 69 6d 65 2c 20 75 6e 66 6f 72 74 zed time, unfort
02e0: 75 6e 61 74 65 6c 79 2e 0a 0a 0a 64 69 66 66 20 unately....diff
02f0: 2d 75 72 20 74 63 6c 38 2e 36 2e 35 2d 6f 72 69 -ur tcl8.6.5-ori
0300: 67 2f 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 g/generic/tclCmd
0310: 4d 5a 2e 63 20 74 63 6c 38 2e 36 2e 35 2f 67 65 MZ.c tcl8.6.5/ge
0320: 6e 65 72 69 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63 neric/tclCmdMZ.c
0330: 0a 2d 2d 2d 20 74 63 6c 38 2e 36 2e 35 2d 6f 72 .--- tcl8.6.5-or
0340: 69 67 2f 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d ig/generic/tclCm
0350: 64 4d 5a 2e 63 09 32 30 31 36 2d 30 32 2d 32 35 dMZ.c.2016-02-25
0360: 20 32 31 3a 31 32 3a 33 37 2e 30 30 30 30 30 30 21:12:37.000000
0370: 30 30 30 20 2b 30 31 30 30 0a 2b 2b 2b 20 74 63 000 +0100.+++ tc
0380: 6c 38 2e 36 2e 35 2f 67 65 6e 65 72 69 63 2f 74 l8.6.5/generic/t
0390: 63 6c 43 6d 64 4d 5a 2e 63 09 32 30 31 36 2d 30 clCmdMZ.c.2016-0
03a0: 33 2d 32 35 20 30 37 3a 30 36 3a 35 32 2e 30 30 3-25 07:06:52.00
03b0: 30 30 30 30 30 30 30 20 2b 30 31 30 30 0a 40 40 0000000 +0100.@@
03c0: 20 2d 34 31 32 34 2c 31 31 20 2b 34 31 32 34 2c -4124,11 +4124,
03d0: 32 34 20 40 40 0a 20 20 20 20 20 72 65 67 69 73 24 @@. regis
03e0: 74 65 72 20 69 6e 74 20 69 2c 20 72 65 73 75 6c ter int i, resul
03f0: 74 3b 0a 20 20 20 20 20 69 6e 74 20 63 6f 75 6e t;. int coun
0400: 74 3b 0a 20 20 20 20 20 64 6f 75 62 6c 65 20 74 t;. double t
0410: 6f 74 61 6c 4d 69 63 72 6f 53 65 63 3b 0a 2b 23 otalMicroSec;.+#
0420: 69 66 64 65 66 20 57 49 4e 33 32 5f 55 53 45 5f ifdef WIN32_USE_
0430: 54 49 43 4b 43 4f 55 4e 54 0a 2b 23 69 66 20 28 TICKCOUNT.+#if (
0440: 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 _WIN32_WINNT >=
0450: 30 78 30 36 30 30 29 0a 2b 20 20 20 20 55 4c 4f 0x0600).+ ULO
0460: 4e 47 4c 4f 4e 47 20 73 74 61 72 74 2c 20 73 74 NGLONG start, st
0470: 6f 70 3b 0a 2b 23 65 6c 73 65 0a 2b 20 20 20 20 op;.+#else.+
0480: 44 57 4f 52 44 20 73 74 61 72 74 2c 20 73 74 6f DWORD start, sto
0490: 70 3b 0a 2b 23 65 6e 64 69 66 0a 2b 23 65 6c 73 p;.+#endif.+#els
04a0: 65 0a 2b 23 69 66 64 65 66 20 48 41 56 45 5f 43 e.+#ifdef HAVE_C
04b0: 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 0a 2b 20 20 LOCK_GETTIME.+
04c0: 20 20 69 6e 74 20 6d 6f 6e 6f 43 6c 6f 63 6b 20 int monoClock
04d0: 3d 20 31 3b 0a 2b 20 20 20 20 73 74 72 75 63 74 = 1;.+ struct
04e0: 20 74 69 6d 65 73 70 65 63 20 73 74 61 72 74 2c timespec start,
04f0: 20 73 74 6f 70 3b 0a 2b 23 65 6c 73 65 0a 20 23 stop;.+#else. #
0500: 69 66 6e 64 65 66 20 54 43 4c 5f 57 49 44 45 5f ifndef TCL_WIDE_
0510: 43 4c 49 43 4b 53 0a 20 20 20 20 20 54 63 6c 5f CLICKS. Tcl_
0520: 54 69 6d 65 20 73 74 61 72 74 2c 20 73 74 6f 70 Time start, stop
0530: 3b 0a 20 23 65 6c 73 65 0a 20 20 20 20 20 54 63 ;. #else. Tc
0540: 6c 5f 57 69 64 65 49 6e 74 20 73 74 61 72 74 2c l_WideInt start,
0550: 20 73 74 6f 70 3b 0a 20 23 65 6e 64 69 66 0a 2b stop;. #endif.+
0560: 23 65 6e 64 69 66 0a 2b 23 65 6e 64 69 66 0a 20 #endif.+#endif.
0570: 0a 20 20 20 20 20 69 66 20 28 6f 62 6a 63 20 3d . if (objc =
0580: 3d 20 32 29 20 7b 0a 20 09 63 6f 75 6e 74 20 3d = 2) {. .count =
0590: 20 31 3b 0a 40 40 20 2d 34 31 34 34 2c 31 37 20 1;.@@ -4144,17
05a0: 2b 34 31 35 37 2c 34 35 20 40 40 0a 20 0a 20 20 +4157,45 @@. .
05b0: 20 20 20 6f 62 6a 50 74 72 20 3d 20 6f 62 6a 76 objPtr = objv
05c0: 5b 31 5d 3b 0a 20 20 20 20 20 69 20 3d 20 63 6f [1];. i = co
05d0: 75 6e 74 3b 0a 2b 23 69 66 64 65 66 20 57 49 4e unt;.+#ifdef WIN
05e0: 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 32_USE_TICKCOUNT
05f0: 0a 2b 23 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 .+#if (_WIN32_WI
0600: 4e 4e 54 20 3e 3d 20 30 78 30 36 30 30 29 0a 2b NNT >= 0x0600).+
0610: 20 20 20 20 73 74 61 72 74 20 3d 20 47 65 74 54 start = GetT
0620: 69 63 6b 43 6f 75 6e 74 36 34 28 29 3b 0a 2b 23 ickCount64();.+#
0630: 65 6c 73 65 0a 2b 20 20 20 20 73 74 61 72 74 20 else.+ start
0640: 3d 20 47 65 74 54 69 63 6b 43 6f 75 6e 74 28 29 = GetTickCount()
0650: 3b 0a 2b 23 65 6e 64 69 66 0a 2b 23 65 6c 73 65 ;.+#endif.+#else
0660: 0a 2b 23 69 66 64 65 66 20 48 41 56 45 5f 43 4c .+#ifdef HAVE_CL
0670: 4f 43 4b 5f 47 45 54 54 49 4d 45 0a 2b 20 20 20 OCK_GETTIME.+
0680: 20 69 66 20 28 63 6c 6f 63 6b 5f 67 65 74 74 69 if (clock_getti
0690: 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e me(CLOCK_MONOTON
06a0: 49 43 2c 20 26 73 74 61 72 74 29 20 3d 3d 20 2d IC, &start) == -
06b0: 31 29 20 7b 0a 2b 09 63 6c 6f 63 6b 5f 67 65 74 1) {.+.clock_get
06c0: 74 69 6d 65 28 43 4c 4f 43 4b 5f 52 45 41 4c 54 time(CLOCK_REALT
06d0: 49 4d 45 2c 20 26 73 74 61 72 74 29 3b 0a 2b 09 IME, &start);.+.
06e0: 6d 6f 6e 6f 43 6c 6f 63 6b 20 3d 20 30 3b 0a 2b monoClock = 0;.+
06f0: 20 20 20 20 7d 0a 2b 23 65 6c 73 65 0a 20 23 69 }.+#else. #i
0700: 66 6e 64 65 66 20 54 43 4c 5f 57 49 44 45 5f 43 fndef TCL_WIDE_C
0710: 4c 49 43 4b 53 0a 20 20 20 20 20 54 63 6c 5f 47 LICKS. Tcl_G
0720: 65 74 54 69 6d 65 28 26 73 74 61 72 74 29 3b 0a etTime(&start);.
0730: 20 23 65 6c 73 65 0a 20 20 20 20 20 73 74 61 72 #else. star
0740: 74 20 3d 20 54 63 6c 70 47 65 74 57 69 64 65 43 t = TclpGetWideC
0750: 6c 69 63 6b 73 28 29 3b 0a 20 23 65 6e 64 69 66 licks();. #endif
0760: 0a 2b 23 65 6e 64 69 66 0a 2b 23 65 6e 64 69 66 .+#endif.+#endif
0770: 0a 20 20 20 20 20 77 68 69 6c 65 20 28 69 2d 2d . while (i--
0780: 20 3e 20 30 29 20 7b 0a 20 09 72 65 73 75 6c 74 > 0) {. .result
0790: 20 3d 20 54 63 6c 5f 45 76 61 6c 4f 62 6a 45 78 = Tcl_EvalObjEx
07a0: 28 69 6e 74 65 72 70 2c 20 6f 62 6a 50 74 72 2c (interp, objPtr,
07b0: 20 30 29 3b 0a 20 09 69 66 20 28 72 65 73 75 6c 0);. .if (resul
07c0: 74 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 t != TCL_OK) {.
07d0: 09 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 . return resu
07e0: 6c 74 3b 0a 20 09 7d 0a 20 20 20 20 20 7d 0a 2b lt;. .}. }.+
07f0: 23 69 66 64 65 66 20 57 49 4e 33 32 5f 55 53 45 #ifdef WIN32_USE
0800: 5f 54 49 43 4b 43 4f 55 4e 54 0a 2b 23 69 66 20 _TICKCOUNT.+#if
0810: 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d (_WIN32_WINNT >=
0820: 20 30 78 30 36 30 30 29 0a 2b 20 20 20 20 73 74 0x0600).+ st
0830: 6f 70 20 3d 20 47 65 74 54 69 63 6b 43 6f 75 6e op = GetTickCoun
0840: 74 36 34 28 29 3b 0a 2b 23 65 6c 73 65 0a 2b 20 t64();.+#else.+
0850: 20 20 20 73 74 6f 70 20 3d 20 47 65 74 54 69 63 stop = GetTic
0860: 6b 43 6f 75 6e 74 28 29 3b 0a 2b 23 65 6e 64 69 kCount();.+#endi
0870: 66 0a 2b 20 20 20 20 74 6f 74 61 6c 4d 69 63 72 f.+ totalMicr
0880: 6f 53 65 63 20 3d 20 28 73 74 6f 70 20 2d 20 73 oSec = (stop - s
0890: 74 61 72 74 29 20 2a 20 31 30 30 30 2e 30 3b 0a tart) * 1000.0;.
08a0: 2b 23 65 6c 73 65 0a 2b 23 69 66 64 65 66 20 48 +#else.+#ifdef H
08b0: 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d AVE_CLOCK_GETTIM
08c0: 45 0a 2b 20 20 20 20 63 6c 6f 63 6b 5f 67 65 74 E.+ clock_get
08d0: 74 69 6d 65 28 6d 6f 6e 6f 43 6c 6f 63 6b 20 3f time(monoClock ?
08e0: 20 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e 49 43 CLOCK_MONOTONIC
08f0: 20 3a 20 43 4c 4f 43 4b 5f 52 45 41 4c 54 49 4d : CLOCK_REALTIM
0900: 45 2c 20 26 73 74 6f 70 29 3b 0a 2b 20 20 20 20 E, &stop);.+
0910: 74 6f 74 61 6c 4d 69 63 72 6f 53 65 63 20 3d 20 totalMicroSec =
0920: 28 28 64 6f 75 62 6c 65 29 20 28 73 74 6f 70 2e ((double) (stop.
0930: 74 76 5f 73 65 63 20 2d 20 73 74 61 72 74 2e 74 tv_sec - start.t
0940: 76 5f 73 65 63 29 29 20 2a 20 31 2e 30 65 36 0a v_sec)) * 1.0e6.
0950: 2b 09 20 20 20 20 2b 20 28 73 74 6f 70 2e 74 76 +. + (stop.tv
0960: 5f 6e 73 65 63 20 2d 20 73 74 61 72 74 2e 74 76 _nsec - start.tv
0970: 5f 6e 73 65 63 29 20 2f 20 31 30 30 30 2e 30 3b _nsec) / 1000.0;
0980: 0a 2b 23 65 6c 73 65 0a 20 23 69 66 6e 64 65 66 .+#else. #ifndef
0990: 20 54 43 4c 5f 57 49 44 45 5f 43 4c 49 43 4b 53 TCL_WIDE_CLICKS
09a0: 0a 20 20 20 20 20 54 63 6c 5f 47 65 74 54 69 6d . Tcl_GetTim
09b0: 65 28 26 73 74 6f 70 29 3b 0a 20 20 20 20 20 74 e(&stop);. t
09c0: 6f 74 61 6c 4d 69 63 72 6f 53 65 63 20 3d 20 28 otalMicroSec = (
09d0: 28 64 6f 75 62 6c 65 29 20 28 73 74 6f 70 2e 73 (double) (stop.s
09e0: 65 63 20 2d 20 73 74 61 72 74 2e 73 65 63 29 29 ec - start.sec))
09f0: 20 2a 20 31 2e 30 65 36 0a 40 40 20 2d 34 31 36 * 1.0e6.@@ -416
0a00: 33 2c 36 20 2b 34 32 30 34 2c 38 20 40 40 0a 20 3,6 +4204,8 @@.
0a10: 20 20 20 20 73 74 6f 70 20 3d 20 54 63 6c 70 47 stop = TclpG
0a20: 65 74 57 69 64 65 43 6c 69 63 6b 73 28 29 3b 0a etWideClicks();.
0a30: 20 20 20 20 20 74 6f 74 61 6c 4d 69 63 72 6f 53 totalMicroS
0a40: 65 63 20 3d 20 28 28 64 6f 75 62 6c 65 29 20 54 ec = ((double) T
0a50: 63 6c 70 57 69 64 65 43 6c 69 63 6b 73 54 6f 4e clpWideClicksToN
0a60: 61 6e 6f 73 65 63 6f 6e 64 73 28 73 74 6f 70 20 anoseconds(stop
0a70: 2d 20 73 74 61 72 74 29 29 2f 31 2e 30 65 33 3b - start))/1.0e3;
0a80: 0a 20 23 65 6e 64 69 66 0a 2b 23 65 6e 64 69 66 . #endif.+#endif
0a90: 0a 2b 23 65 6e 64 69 66 0a 20 0a 20 20 20 20 20 .+#endif. .
0aa0: 69 66 20 28 63 6f 75 6e 74 20 3c 3d 20 31 29 20 if (count <= 1)
0ab0: 7b 0a 20 09 2f 2a 0a 64 69 66 66 20 2d 75 72 20 {. ./*.diff -ur
0ac0: 74 63 6c 38 2e 36 2e 35 2d 6f 72 69 67 2f 67 65 tcl8.6.5-orig/ge
0ad0: 6e 65 72 69 63 2f 74 63 6c 49 6e 74 65 72 70 2e neric/tclInterp.
0ae0: 63 20 74 63 6c 38 2e 36 2e 35 2f 67 65 6e 65 72 c tcl8.6.5/gener
0af0: 69 63 2f 74 63 6c 49 6e 74 65 72 70 2e 63 0a 2d ic/tclInterp.c.-
0b00: 2d 2d 20 74 63 6c 38 2e 36 2e 35 2d 6f 72 69 67 -- tcl8.6.5-orig
0b10: 2f 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 65 /generic/tclInte
0b20: 72 70 2e 63 09 32 30 31 36 2d 30 32 2d 32 35 20 rp.c.2016-02-25
0b30: 32 31 3a 31 32 3a 33 37 2e 30 30 30 30 30 30 30 21:12:37.0000000
0b40: 30 30 20 2b 30 31 30 30 0a 2b 2b 2b 20 74 63 6c 00 +0100.+++ tcl
0b50: 38 2e 36 2e 35 2f 67 65 6e 65 72 69 63 2f 74 63 8.6.5/generic/tc
0b60: 6c 49 6e 74 65 72 70 2e 63 09 32 30 31 36 2d 30 lInterp.c.2016-0
0b70: 33 2d 32 35 20 30 37 3a 30 36 3a 30 32 2e 30 30 3-25 07:06:02.00
0b80: 30 30 30 30 30 30 30 20 2b 30 31 30 30 0a 40 40 0000000 +0100.@@
0b90: 20 2d 33 34 31 36 2c 38 20 2b 33 34 31 36 2c 32 -3416,8 +3416,2
0ba0: 34 20 40 40 0a 20 09 20 20 20 20 28 28 69 50 74 4 @@. . ((iPt
0bb0: 72 2d 3e 6c 69 6d 69 74 2e 74 69 6d 65 47 72 61 r->limit.timeGra
0bc0: 6e 75 6c 61 72 69 74 79 20 3d 3d 20 31 29 20 7c nularity == 1) |
0bd0: 7c 0a 20 09 09 28 74 69 63 6b 65 72 20 25 20 69 |. ..(ticker % i
0be0: 50 74 72 2d 3e 6c 69 6d 69 74 2e 74 69 6d 65 47 Ptr->limit.timeG
0bf0: 72 61 6e 75 6c 61 72 69 74 79 20 3d 3d 20 30 29 ranularity == 0)
0c00: 29 29 20 7b 0a 20 09 54 63 6c 5f 54 69 6d 65 20 )) {. .Tcl_Time
0c10: 6e 6f 77 3b 0a 2b 23 69 66 20 28 5f 57 49 4e 33 now;.+#if (_WIN3
0c20: 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 30 36 30 2_WINNT >= 0x060
0c30: 30 29 20 26 26 20 64 65 66 69 6e 65 64 28 57 49 0) && defined(WI
0c40: 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e N32_USE_TICKCOUN
0c50: 54 29 0a 2b 09 55 4c 4f 4e 47 4c 4f 4e 47 20 74 T).+.ULONGLONG t
0c60: 69 63 6b 73 20 3d 20 47 65 74 54 69 63 6b 43 6f icks = GetTickCo
0c70: 75 6e 74 36 34 28 29 3b 0a 20 0a 2b 09 6e 6f 77 unt64();. .+.now
0c80: 2e 73 65 63 20 3d 20 74 69 63 6b 73 20 2f 20 31 .sec = ticks / 1
0c90: 30 30 30 3b 0a 2b 09 6e 6f 77 2e 75 73 65 63 20 000;.+.now.usec
0ca0: 3d 20 28 74 69 63 6b 73 20 25 20 31 30 30 30 29 = (ticks % 1000)
0cb0: 20 2a 20 31 30 30 30 3b 0a 2b 23 65 6c 73 65 0a * 1000;.+#else.
0cc0: 2b 23 69 66 64 65 66 20 48 41 56 45 5f 43 4c 4f +#ifdef HAVE_CLO
0cd0: 43 4b 5f 47 45 54 54 49 4d 45 0a 2b 09 73 74 72 CK_GETTIME.+.str
0ce0: 75 63 74 20 74 69 6d 65 73 70 65 63 20 74 73 3b uct timespec ts;
0cf0: 0a 2b 0a 2b 09 69 66 20 28 63 6c 6f 63 6b 5f 67 .+.+.if (clock_g
0d00: 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e ettime(CLOCK_MON
0d10: 4f 54 4f 4e 49 43 2c 20 26 74 73 29 20 3d 3d 20 OTONIC, &ts) ==
0d20: 2d 31 29 20 7b 0a 2b 09 20 20 20 20 63 6c 6f 63 -1) {.+. cloc
0d30: 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f k_gettime(CLOCK_
0d40: 52 45 41 4c 54 49 4d 45 2c 20 26 74 73 29 3b 0a REALTIME, &ts);.
0d50: 2b 09 7d 0a 2b 09 6e 6f 77 2e 73 65 63 20 3d 20 +.}.+.now.sec =
0d60: 74 73 2e 74 76 5f 73 65 63 3b 0a 2b 09 6e 6f 77 ts.tv_sec;.+.now
0d70: 2e 75 73 65 63 20 3d 20 74 73 2e 74 76 5f 6e 73 .usec = ts.tv_ns
0d80: 65 63 20 2a 20 31 30 30 30 3b 0a 2b 23 65 6c 73 ec * 1000;.+#els
0d90: 65 0a 20 09 54 63 6c 5f 47 65 74 54 69 6d 65 28 e. .Tcl_GetTime(
0da0: 26 6e 6f 77 29 3b 0a 2b 23 65 6e 64 69 66 0a 2b &now);.+#endif.+
0db0: 23 65 6e 64 69 66 0a 20 09 69 66 20 28 69 50 74 #endif. .if (iPt
0dc0: 72 2d 3e 6c 69 6d 69 74 2e 74 69 6d 65 2e 73 65 r->limit.time.se
0dd0: 63 20 3c 20 6e 6f 77 2e 73 65 63 20 7c 7c 0a 20 c < now.sec ||.
0de0: 09 09 28 69 50 74 72 2d 3e 6c 69 6d 69 74 2e 74 ..(iPtr->limit.t
0df0: 69 6d 65 2e 73 65 63 20 3d 3d 20 6e 6f 77 2e 73 ime.sec == now.s
0e00: 65 63 20 26 26 0a 20 09 09 69 50 74 72 2d 3e 6c ec &&. ..iPtr->l
0e10: 69 6d 69 74 2e 74 69 6d 65 2e 75 73 65 63 20 3c imit.time.usec <
0e20: 20 6e 6f 77 2e 75 73 65 63 29 29 20 7b 0a 40 40 now.usec)) {.@@
0e30: 20 2d 33 38 35 39 2c 36 20 2b 33 38 37 35 2c 31 -3859,6 +3875,1
0e40: 32 20 40 40 0a 20 7b 0a 20 20 20 20 20 49 6e 74 2 @@. {. Int
0e50: 65 72 70 20 2a 69 50 74 72 20 3d 20 28 49 6e 74 erp *iPtr = (Int
0e60: 65 72 70 20 2a 29 20 69 6e 74 65 72 70 3b 0a 20 erp *) interp;.
0e70: 0a 2b 23 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 .+#if (_WIN32_WI
0e80: 4e 4e 54 20 3c 20 30 78 30 36 30 30 29 20 26 26 NNT < 0x0600) &&
0e90: 20 64 65 66 69 6e 65 64 28 57 49 4e 33 32 5f 55 defined(WIN32_U
0ea0: 53 45 5f 54 49 43 4b 43 4f 55 4e 54 29 0a 2b 20 SE_TICKCOUNT).+
0eb0: 20 20 20 69 66 20 28 74 79 70 65 20 3d 3d 20 54 if (type == T
0ec0: 43 4c 5f 4c 49 4d 49 54 5f 54 49 4d 45 29 20 7b CL_LIMIT_TIME) {
0ed0: 0a 2b 09 2f 2a 20 6e 6f 74 20 69 6d 70 6c 65 6d .+./* not implem
0ee0: 65 6e 74 65 64 20 66 6f 72 20 5f 57 49 4e 33 32 ented for _WIN32
0ef0: 20 2a 2f 0a 2b 09 72 65 74 75 72 6e 3b 0a 2b 20 */.+.return;.+
0f00: 20 20 20 7d 0a 2b 23 65 6e 64 69 66 0a 20 20 20 }.+#endif.
0f10: 20 20 69 50 74 72 2d 3e 6c 69 6d 69 74 2e 61 63 iPtr->limit.ac
0f20: 74 69 76 65 20 7c 3d 20 74 79 70 65 3b 0a 20 7d tive |= type;. }
0f30: 0a 20 0c 0a 40 40 20 2d 34 33 38 32 2c 31 32 20 . ..@@ -4382,12
0f40: 2b 34 34 30 34 2c 31 36 20 40 40 0a 20 09 73 6c +4404,16 @@. .sl
0f50: 61 76 65 50 74 72 2d 3e 6c 69 6d 69 74 2e 63 6d avePtr->limit.cm
0f60: 64 43 6f 75 6e 74 20 3d 20 30 3b 0a 20 09 73 6c dCount = 0;. .sl
0f70: 61 76 65 50 74 72 2d 3e 6c 69 6d 69 74 2e 63 6d avePtr->limit.cm
0f80: 64 47 72 61 6e 75 6c 61 72 69 74 79 20 3d 20 6d dGranularity = m
0f90: 61 73 74 65 72 50 74 72 2d 3e 6c 69 6d 69 74 2e asterPtr->limit.
0fa0: 63 6d 64 47 72 61 6e 75 6c 61 72 69 74 79 3b 0a cmdGranularity;.
0fb0: 20 20 20 20 20 7d 0a 2b 23 69 66 20 28 5f 57 49 }.+#if (_WI
0fc0: 4e 33 32 5f 57 49 4e 4e 54 20 3c 20 30 78 30 36 N32_WINNT < 0x06
0fd0: 30 30 29 20 26 26 20 64 65 66 69 6e 65 64 28 57 00) && defined(W
0fe0: 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 IN32_USE_TICKCOU
0ff0: 4e 54 29 0a 2b 20 20 20 20 2f 2a 20 6e 6f 74 20 NT).+ /* not
1000: 69 6d 70 6c 65 6d 65 6e 74 65 64 20 66 6f 72 20 implemented for
1010: 5f 57 49 4e 33 32 20 2a 2f 0a 2b 23 65 6c 73 65 _WIN32 */.+#else
1020: 0a 20 20 20 20 20 69 66 20 28 6d 61 73 74 65 72 . if (master
1030: 50 74 72 2d 3e 6c 69 6d 69 74 2e 61 63 74 69 76 Ptr->limit.activ
1040: 65 20 26 20 54 43 4c 5f 4c 49 4d 49 54 5f 54 49 e & TCL_LIMIT_TI
1050: 4d 45 29 20 7b 0a 20 09 73 6c 61 76 65 50 74 72 ME) {. .slavePtr
1060: 2d 3e 6c 69 6d 69 74 2e 61 63 74 69 76 65 20 7c ->limit.active |
1070: 3d 20 54 43 4c 5f 4c 49 4d 49 54 5f 54 49 4d 45 = TCL_LIMIT_TIME
1080: 3b 0a 20 09 6d 65 6d 63 70 79 28 26 73 6c 61 76 ;. .memcpy(&slav
1090: 65 50 74 72 2d 3e 6c 69 6d 69 74 2e 74 69 6d 65 ePtr->limit.time
10a0: 2c 20 26 6d 61 73 74 65 72 50 74 72 2d 3e 6c 69 , &masterPtr->li
10b0: 6d 69 74 2e 74 69 6d 65 2c 0a 20 09 09 73 69 7a mit.time,. ..siz
10c0: 65 6f 66 28 54 63 6c 5f 54 69 6d 65 29 29 3b 0a eof(Tcl_Time));.
10d0: 20 09 73 6c 61 76 65 50 74 72 2d 3e 6c 69 6d 69 .slavePtr->limi
10e0: 74 2e 74 69 6d 65 47 72 61 6e 75 6c 61 72 69 74 t.timeGranularit
10f0: 79 20 3d 20 6d 61 73 74 65 72 50 74 72 2d 3e 6c y = masterPtr->l
1100: 69 6d 69 74 2e 74 69 6d 65 47 72 61 6e 75 6c 61 imit.timeGranula
1110: 72 69 74 79 3b 0a 20 20 20 20 20 7d 0a 2b 23 65 rity;. }.+#e
1120: 6e 64 69 66 0a 20 7d 0a 20 0c 0a 20 2f 2a 0a 64 ndif. }. .. /*.d
1130: 69 66 66 20 2d 75 72 20 74 63 6c 38 2e 36 2e 35 iff -ur tcl8.6.5
1140: 2d 6f 72 69 67 2f 67 65 6e 65 72 69 63 2f 74 63 -orig/generic/tc
1150: 6c 54 69 6d 65 72 2e 63 20 74 63 6c 38 2e 36 2e lTimer.c tcl8.6.
1160: 35 2f 67 65 6e 65 72 69 63 2f 74 63 6c 54 69 6d 5/generic/tclTim
1170: 65 72 2e 63 0a 2d 2d 2d 20 74 63 6c 38 2e 36 2e er.c.--- tcl8.6.
1180: 35 2d 6f 72 69 67 2f 67 65 6e 65 72 69 63 2f 74 5-orig/generic/t
1190: 63 6c 54 69 6d 65 72 2e 63 09 32 30 31 36 2d 30 clTimer.c.2016-0
11a0: 32 2d 32 35 20 32 31 3a 31 32 3a 33 37 2e 30 30 2-25 21:12:37.00
11b0: 30 30 30 30 30 30 30 20 2b 30 31 30 30 0a 2b 2b 0000000 +0100.++
11c0: 2b 20 74 63 6c 38 2e 36 2e 35 2f 67 65 6e 65 72 + tcl8.6.5/gener
11d0: 69 63 2f 74 63 6c 54 69 6d 65 72 2e 63 09 32 30 ic/tclTimer.c.20
11e0: 31 36 2d 30 33 2d 32 35 20 30 36 3a 33 34 3a 33 16-03-25 06:34:3
11f0: 31 2e 33 37 37 35 39 39 37 37 32 20 2b 30 31 30 1.377599772 +010
1200: 30 0a 40 40 20 2d 32 35 39 2c 37 20 2b 32 35 39 0.@@ -259,7 +259
1210: 2c 33 33 20 40 40 0a 20 20 20 20 20 20 2a 20 43 ,33 @@. * C
1220: 6f 6d 70 75 74 65 20 77 68 65 6e 20 74 68 65 20 ompute when the
1230: 65 76 65 6e 74 20 73 68 6f 75 6c 64 20 66 69 72 event should fir
1240: 65 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2b 23 e.. */. .+#
1250: 69 66 64 65 66 20 57 49 4e 33 32 5f 55 53 45 5f ifdef WIN32_USE_
1260: 54 49 43 4b 43 4f 55 4e 54 0a 2b 23 69 66 20 28 TICKCOUNT.+#if (
1270: 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 _WIN32_WINNT >=
1280: 30 78 30 36 30 30 29 0a 2b 20 20 20 20 55 4c 4f 0x0600).+ ULO
1290: 4e 47 4c 4f 4e 47 20 74 69 63 6b 73 20 3d 20 47 NGLONG ticks = G
12a0: 65 74 54 69 63 6b 43 6f 75 6e 74 36 34 28 29 3b etTickCount64();
12b0: 0a 2b 0a 2b 20 20 20 20 74 69 6d 65 2e 73 65 63 .+.+ time.sec
12c0: 20 3d 20 28 6c 6f 6e 67 29 20 28 28 74 69 63 6b = (long) ((tick
12d0: 73 2b 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 29 2f s+milliseconds)/
12e0: 31 30 30 30 29 3b 0a 2b 20 20 20 20 74 69 6d 65 1000);.+ time
12f0: 2e 75 73 65 63 20 3d 20 28 6c 6f 6e 67 29 20 28 .usec = (long) (
1300: 28 28 74 69 63 6b 73 2b 6d 69 6c 6c 69 73 65 63 ((ticks+millisec
1310: 6f 6e 64 73 29 25 31 30 30 30 29 2a 31 30 30 30 onds)%1000)*1000
1320: 29 3b 0a 2b 23 65 6c 73 65 0a 2b 20 20 20 20 69 );.+#else.+ i
1330: 66 20 28 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 f (milliseconds
1340: 3e 20 30 78 37 46 46 46 46 46 46 46 29 20 7b 0a > 0x7FFFFFFF) {.
1350: 2b 09 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 3d +.milliseconds =
1360: 20 30 78 37 46 46 46 46 46 46 46 3b 0a 2b 20 20 0x7FFFFFFF;.+
1370: 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6d 69 6c } else if (mil
1380: 6c 69 73 65 63 6f 6e 64 73 20 3c 20 30 29 20 7b liseconds < 0) {
1390: 0a 2b 09 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 .+.milliseconds
13a0: 3d 20 30 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 = 0;.+ }.+
13b0: 20 74 69 6d 65 2e 73 65 63 20 3d 20 6d 69 6c 6c time.sec = mill
13c0: 69 73 65 63 6f 6e 64 73 20 2b 20 47 65 74 54 69 iseconds + GetTi
13d0: 63 6b 43 6f 75 6e 74 28 29 3b 0a 2b 20 20 20 20 ckCount();.+
13e0: 74 69 6d 65 2e 75 73 65 63 20 3d 20 30 3b 0a 2b time.usec = 0;.+
13f0: 23 65 6e 64 69 66 0a 2b 23 65 6c 73 65 0a 2b 23 #endif.+#else.+#
1400: 69 66 64 65 66 20 48 41 56 45 5f 43 4c 4f 43 4b ifdef HAVE_CLOCK
1410: 5f 47 45 54 54 49 4d 45 0a 2b 20 20 20 20 73 74 _GETTIME.+ st
1420: 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 74 73 ruct timespec ts
1430: 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 63 6c 6f ;.+.+ if (clo
1440: 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b ck_gettime(CLOCK
1450: 5f 4d 4f 4e 4f 54 4f 4e 49 43 2c 20 26 74 73 29 _MONOTONIC, &ts)
1460: 20 3d 3d 20 2d 31 29 20 7b 0a 2b 09 63 6c 6f 63 == -1) {.+.cloc
1470: 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f k_gettime(CLOCK_
1480: 52 45 41 4c 54 49 4d 45 2c 20 26 74 73 29 3b 0a REALTIME, &ts);.
1490: 2b 20 20 20 20 7d 0a 2b 20 20 20 20 74 69 6d 65 + }.+ time
14a0: 2e 73 65 63 20 3d 20 74 73 2e 74 76 5f 73 65 63 .sec = ts.tv_sec
14b0: 3b 0a 2b 20 20 20 20 74 69 6d 65 2e 75 73 65 63 ;.+ time.usec
14c0: 20 3d 20 74 73 2e 74 76 5f 6e 73 65 63 20 2f 20 = ts.tv_nsec /
14d0: 31 30 30 30 3b 0a 2b 23 65 6c 73 65 0a 20 20 20 1000;.+#else.
14e0: 20 20 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 74 Tcl_GetTime(&t
14f0: 69 6d 65 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 20 ime);.+#endif.
1500: 20 20 20 74 69 6d 65 2e 73 65 63 20 2b 3d 20 6d time.sec += m
1510: 69 6c 6c 69 73 65 63 6f 6e 64 73 2f 31 30 30 30 illiseconds/1000
1520: 3b 0a 20 20 20 20 20 74 69 6d 65 2e 75 73 65 63 ;. time.usec
1530: 20 2b 3d 20 28 6d 69 6c 6c 69 73 65 63 6f 6e 64 += (millisecond
1540: 73 25 31 30 30 30 29 2a 31 30 30 30 3b 0a 20 20 s%1000)*1000;.
1550: 20 20 20 69 66 20 28 74 69 6d 65 2e 75 73 65 63 if (time.usec
1560: 20 3e 3d 20 31 30 30 30 30 30 30 29 20 7b 0a 40 >= 1000000) {.@
1570: 40 20 2d 33 31 36 2c 39 20 2b 33 34 32 2c 31 35 @ -316,9 +342,15
1580: 20 40 40 0a 20 0a 20 20 20 20 20 66 6f 72 20 28 @@. . for (
1590: 74 50 74 72 32 20 3d 20 74 73 64 50 74 72 2d 3e tPtr2 = tsdPtr->
15a0: 66 69 72 73 74 54 69 6d 65 72 48 61 6e 64 6c 65 firstTimerHandle
15b0: 72 50 74 72 2c 20 70 72 65 76 50 74 72 20 3d 20 rPtr, prevPtr =
15c0: 4e 55 4c 4c 3b 20 74 50 74 72 32 20 21 3d 20 4e NULL; tPtr2 != N
15d0: 55 4c 4c 3b 0a 20 09 20 20 20 20 70 72 65 76 50 ULL;. . prevP
15e0: 74 72 20 3d 20 74 50 74 72 32 2c 20 74 50 74 72 tr = tPtr2, tPtr
15f0: 32 20 3d 20 74 50 74 72 32 2d 3e 6e 65 78 74 50 2 = tPtr2->nextP
1600: 74 72 29 20 7b 0a 2b 23 69 66 20 28 5f 57 49 4e tr) {.+#if (_WIN
1610: 33 32 5f 57 49 4e 4e 54 20 3c 20 30 78 30 36 30 32_WINNT < 0x060
1620: 30 29 20 26 26 20 64 65 66 69 6e 65 64 28 57 49 0) && defined(WI
1630: 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e N32_USE_TICKCOUN
1640: 54 29 0a 2b 09 69 66 20 28 74 69 6d 65 72 48 61 T).+.if (timerHa
1650: 6e 64 6c 65 72 50 74 72 2d 3e 74 69 6d 65 2e 73 ndlerPtr->time.s
1660: 65 63 20 2d 20 74 50 74 72 32 2d 3e 74 69 6d 65 ec - tPtr2->time
1670: 2e 73 65 63 20 3c 20 30 29 20 7b 0a 2b 09 20 20 .sec < 0) {.+.
1680: 20 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a 2b 23 65 break;.+.}.+#e
1690: 6c 73 65 0a 20 09 69 66 20 28 54 43 4c 5f 54 49 lse. .if (TCL_TI
16a0: 4d 45 5f 42 45 46 4f 52 45 28 74 69 6d 65 72 48 ME_BEFORE(timerH
16b0: 61 6e 64 6c 65 72 50 74 72 2d 3e 74 69 6d 65 2c andlerPtr->time,
16c0: 20 74 50 74 72 32 2d 3e 74 69 6d 65 29 29 20 7b tPtr2->time)) {
16d0: 0a 20 09 20 20 20 20 62 72 65 61 6b 3b 0a 20 09 . . break;. .
16e0: 7d 0a 2b 23 65 6e 64 69 66 0a 20 20 20 20 20 7d }.+#endif. }
16f0: 0a 20 20 20 20 20 74 69 6d 65 72 48 61 6e 64 6c . timerHandl
1700: 65 72 50 74 72 2d 3e 6e 65 78 74 50 74 72 20 3d erPtr->nextPtr =
1710: 20 74 50 74 72 32 3b 0a 20 20 20 20 20 69 66 20 tPtr2;. if
1720: 28 70 72 65 76 50 74 72 20 3d 3d 20 4e 55 4c 4c (prevPtr == NULL
1730: 29 20 7b 0a 40 40 20 2d 34 31 36 2c 38 20 2b 34 ) {.@@ -416,8 +4
1740: 34 38 2c 34 36 20 40 40 0a 20 09 2f 2a 0a 20 09 48,46 @@. ./*. .
1750: 20 2a 20 43 6f 6d 70 75 74 65 20 74 68 65 20 74 * Compute the t
1760: 69 6d 65 6f 75 74 20 66 6f 72 20 74 68 65 20 6e imeout for the n
1770: 65 78 74 20 74 69 6d 65 72 20 6f 6e 20 74 68 65 ext timer on the
1780: 20 6c 69 73 74 2e 0a 20 09 20 2a 2f 0a 2d 0a 2b list.. . */.-.+
1790: 23 69 66 64 65 66 20 57 49 4e 33 32 5f 55 53 45 #ifdef WIN32_USE
17a0: 5f 54 49 43 4b 43 4f 55 4e 54 0a 2b 23 69 66 20 _TICKCOUNT.+#if
17b0: 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d (_WIN32_WINNT >=
17c0: 20 30 78 30 36 30 30 29 0a 2b 09 55 4c 4f 4e 47 0x0600).+.ULONG
17d0: 4c 4f 4e 47 20 74 69 63 6b 73 20 3d 20 47 65 74 LONG ticks = Get
17e0: 54 69 63 6b 43 6f 75 6e 74 36 34 28 29 3b 0a 2b TickCount64();.+
17f0: 0a 2b 09 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 .+.blockTime.sec
1800: 20 3d 20 28 6c 6f 6e 67 29 0a 2b 09 20 20 20 20 = (long).+.
1810: 28 28 55 4c 4f 4e 47 4c 4f 4e 47 29 20 74 73 64 ((ULONGLONG) tsd
1820: 50 74 72 2d 3e 66 69 72 73 74 54 69 6d 65 72 48 Ptr->firstTimerH
1830: 61 6e 64 6c 65 72 50 74 72 2d 3e 74 69 6d 65 2e andlerPtr->time.
1840: 73 65 63 20 2d 0a 2b 09 09 28 74 69 63 6b 73 20 sec -.+..(ticks
1850: 2f 20 31 30 30 30 29 29 3b 0a 2b 09 62 6c 6f 63 / 1000));.+.bloc
1860: 6b 54 69 6d 65 2e 75 73 65 63 20 3d 20 28 6c 6f kTime.usec = (lo
1870: 6e 67 29 0a 2b 09 20 20 20 20 28 28 55 4c 4f 4e ng).+. ((ULON
1880: 47 4c 4f 4e 47 29 20 74 73 64 50 74 72 2d 3e 66 GLONG) tsdPtr->f
1890: 69 72 73 74 54 69 6d 65 72 48 61 6e 64 6c 65 72 irstTimerHandler
18a0: 50 74 72 2d 3e 74 69 6d 65 2e 75 73 65 63 20 2d Ptr->time.usec -
18b0: 0a 2b 09 09 28 74 69 63 6b 73 20 25 20 31 30 30 .+..(ticks % 100
18c0: 30 29 20 2a 20 31 30 30 30 29 3b 0a 2b 09 69 66 0) * 1000);.+.if
18d0: 20 28 62 6c 6f 63 6b 54 69 6d 65 2e 75 73 65 63 (blockTime.usec
18e0: 20 3c 20 30 29 20 7b 0a 2b 09 20 20 20 20 62 6c < 0) {.+. bl
18f0: 6f 63 6b 54 69 6d 65 2e 73 65 63 20 2d 3d 20 31 ockTime.sec -= 1
1900: 3b 0a 2b 09 20 20 20 20 62 6c 6f 63 6b 54 69 6d ;.+. blockTim
1910: 65 2e 75 73 65 63 20 2b 3d 20 31 30 30 30 30 30 e.usec += 100000
1920: 30 3b 0a 2b 09 7d 0a 2b 09 69 66 20 28 62 6c 6f 0;.+.}.+.if (blo
1930: 63 6b 54 69 6d 65 2e 73 65 63 20 3c 20 30 29 20 ckTime.sec < 0)
1940: 7b 0a 2b 09 20 20 20 20 62 6c 6f 63 6b 54 69 6d {.+. blockTim
1950: 65 2e 73 65 63 20 3d 20 30 3b 0a 2b 09 20 20 20 e.sec = 0;.+.
1960: 20 62 6c 6f 63 6b 54 69 6d 65 2e 75 73 65 63 20 blockTime.usec
1970: 3d 20 30 3b 0a 2b 09 7d 0a 2b 23 65 6c 73 65 0a = 0;.+.}.+#else.
1980: 2b 09 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 +.blockTime.sec
1990: 3d 20 74 73 64 50 74 72 2d 3e 66 69 72 73 74 54 = tsdPtr->firstT
19a0: 69 6d 65 72 48 61 6e 64 6c 65 72 50 74 72 2d 3e imerHandlerPtr->
19b0: 74 69 6d 65 2e 73 65 63 20 2d 20 47 65 74 54 69 time.sec - GetTi
19c0: 63 6b 43 6f 75 6e 74 28 29 3b 0a 2b 09 69 66 20 ckCount();.+.if
19d0: 28 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 3c (blockTime.sec <
19e0: 3d 20 30 29 20 7b 0a 2b 09 20 20 20 20 62 6c 6f = 0) {.+. blo
19f0: 63 6b 54 69 6d 65 2e 73 65 63 20 3d 20 30 3b 0a ckTime.sec = 0;.
1a00: 2b 09 20 20 20 20 62 6c 6f 63 6b 54 69 6d 65 2e +. blockTime.
1a10: 75 73 65 63 20 3d 20 30 3b 0a 2b 09 7d 20 65 6c usec = 0;.+.} el
1a20: 73 65 20 7b 0a 2b 09 20 20 20 20 62 6c 6f 63 6b se {.+. block
1a30: 54 69 6d 65 2e 75 73 65 63 20 3d 20 28 62 6c 6f Time.usec = (blo
1a40: 63 6b 54 69 6d 65 2e 73 65 63 20 25 20 31 30 30 ckTime.sec % 100
1a50: 30 29 20 2a 20 31 30 30 30 3b 0a 2b 09 20 20 20 0) * 1000;.+.
1a60: 20 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 2f blockTime.sec /
1a70: 3d 20 31 30 30 30 3b 0a 2b 09 7d 0a 2b 23 65 6e = 1000;.+.}.+#en
1a80: 64 69 66 0a 2b 23 65 6c 73 65 0a 2b 23 69 66 64 dif.+#else.+#ifd
1a90: 65 66 20 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 ef HAVE_CLOCK_GE
1aa0: 54 54 49 4d 45 0a 2b 09 73 74 72 75 63 74 20 74 TTIME.+.struct t
1ab0: 69 6d 65 73 70 65 63 20 74 73 3b 0a 2b 0a 2b 09 imespec ts;.+.+.
1ac0: 69 66 20 28 63 6c 6f 63 6b 5f 67 65 74 74 69 6d if (clock_gettim
1ad0: 65 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e 49 e(CLOCK_MONOTONI
1ae0: 43 2c 20 26 74 73 29 20 3d 3d 20 2d 31 29 20 7b C, &ts) == -1) {
1af0: 0a 2b 09 20 20 20 20 63 6c 6f 63 6b 5f 67 65 74 .+. clock_get
1b00: 74 69 6d 65 28 43 4c 4f 43 4b 5f 52 45 41 4c 54 time(CLOCK_REALT
1b10: 49 4d 45 2c 20 26 74 73 29 3b 0a 2b 09 7d 0a 2b IME, &ts);.+.}.+
1b20: 09 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 3d .blockTime.sec =
1b30: 20 74 73 2e 74 76 5f 73 65 63 3b 0a 2b 09 62 6c ts.tv_sec;.+.bl
1b40: 6f 63 6b 54 69 6d 65 2e 75 73 65 63 20 3d 20 74 ockTime.usec = t
1b50: 73 2e 74 76 5f 6e 73 65 63 20 2f 20 31 30 30 30 s.tv_nsec / 1000
1b60: 3b 0a 2b 23 65 6c 73 65 0a 20 09 54 63 6c 5f 47 ;.+#else. .Tcl_G
1b70: 65 74 54 69 6d 65 28 26 62 6c 6f 63 6b 54 69 6d etTime(&blockTim
1b80: 65 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 09 62 6c e);.+#endif. .bl
1b90: 6f 63 6b 54 69 6d 65 2e 73 65 63 20 3d 20 74 73 ockTime.sec = ts
1ba0: 64 50 74 72 2d 3e 66 69 72 73 74 54 69 6d 65 72 dPtr->firstTimer
1bb0: 48 61 6e 64 6c 65 72 50 74 72 2d 3e 74 69 6d 65 HandlerPtr->time
1bc0: 2e 73 65 63 20 2d 20 62 6c 6f 63 6b 54 69 6d 65 .sec - blockTime
1bd0: 2e 73 65 63 3b 0a 20 09 62 6c 6f 63 6b 54 69 6d .sec;. .blockTim
1be0: 65 2e 75 73 65 63 20 3d 20 74 73 64 50 74 72 2d e.usec = tsdPtr-
1bf0: 3e 66 69 72 73 74 54 69 6d 65 72 48 61 6e 64 6c >firstTimerHandl
1c00: 65 72 50 74 72 2d 3e 74 69 6d 65 2e 75 73 65 63 erPtr->time.usec
1c10: 20 2d 0a 20 09 09 62 6c 6f 63 6b 54 69 6d 65 2e -. ..blockTime.
1c20: 75 73 65 63 3b 0a 40 40 20 2d 34 32 39 2c 36 20 usec;.@@ -429,6
1c30: 2b 34 39 39 2c 37 20 40 40 0a 20 09 20 20 20 20 +499,7 @@. .
1c40: 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 3d 20 blockTime.sec =
1c50: 30 3b 0a 20 09 20 20 20 20 62 6c 6f 63 6b 54 69 0;. . blockTi
1c60: 6d 65 2e 75 73 65 63 20 3d 20 30 3b 0a 20 09 7d me.usec = 0;. .}
1c70: 0a 2b 23 65 6e 64 69 66 0a 20 20 20 20 20 7d 20 .+#endif. }
1c80: 65 6c 73 65 20 7b 0a 20 09 72 65 74 75 72 6e 3b else {. .return;
1c90: 0a 20 20 20 20 20 7d 0a 40 40 20 2d 34 36 37 2c . }.@@ -467,
1ca0: 38 20 2b 35 33 38 2c 34 36 20 40 40 0a 20 09 2f 8 +538,46 @@. ./
1cb0: 2a 0a 20 09 20 2a 20 43 6f 6d 70 75 74 65 20 74 *. . * Compute t
1cc0: 68 65 20 74 69 6d 65 6f 75 74 20 66 6f 72 20 74 he timeout for t
1cd0: 68 65 20 6e 65 78 74 20 74 69 6d 65 72 20 6f 6e he next timer on
1ce0: 20 74 68 65 20 6c 69 73 74 2e 0a 20 09 20 2a 2f the list.. . */
1cf0: 0a 2d 0a 2b 23 69 66 64 65 66 20 57 49 4e 33 32 .-.+#ifdef WIN32
1d00: 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 0a 2b _USE_TICKCOUNT.+
1d10: 23 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e #if (_WIN32_WINN
1d20: 54 20 3e 3d 20 30 78 30 36 30 30 29 0a 2b 09 55 T >= 0x0600).+.U
1d30: 4c 4f 4e 47 4c 4f 4e 47 20 74 69 63 6b 73 20 3d LONGLONG ticks =
1d40: 20 47 65 74 54 69 63 6b 43 6f 75 6e 74 36 34 28 GetTickCount64(
1d50: 29 3b 0a 2b 0a 2b 09 62 6c 6f 63 6b 54 69 6d 65 );.+.+.blockTime
1d60: 2e 73 65 63 20 3d 20 28 6c 6f 6e 67 29 0a 2b 09 .sec = (long).+.
1d70: 20 20 20 20 28 28 55 4c 4f 4e 47 4c 4f 4e 47 29 ((ULONGLONG)
1d80: 20 74 73 64 50 74 72 2d 3e 66 69 72 73 74 54 69 tsdPtr->firstTi
1d90: 6d 65 72 48 61 6e 64 6c 65 72 50 74 72 2d 3e 74 merHandlerPtr->t
1da0: 69 6d 65 2e 73 65 63 20 2d 0a 2b 09 09 28 74 69 ime.sec -.+..(ti
1db0: 63 6b 73 20 2f 20 31 30 30 30 29 29 3b 0a 2b 09 cks / 1000));.+.
1dc0: 62 6c 6f 63 6b 54 69 6d 65 2e 75 73 65 63 20 3d blockTime.usec =
1dd0: 20 28 6c 6f 6e 67 29 0a 2b 09 20 20 20 20 28 28 (long).+. ((
1de0: 55 4c 4f 4e 47 4c 4f 4e 47 29 20 74 73 64 50 74 ULONGLONG) tsdPt
1df0: 72 2d 3e 66 69 72 73 74 54 69 6d 65 72 48 61 6e r->firstTimerHan
1e00: 64 6c 65 72 50 74 72 2d 3e 74 69 6d 65 2e 75 73 dlerPtr->time.us
1e10: 65 63 20 2d 0a 2b 09 09 28 74 69 63 6b 73 20 25 ec -.+..(ticks %
1e20: 20 31 30 30 30 29 20 2a 20 31 30 30 30 29 3b 0a 1000) * 1000);.
1e30: 2b 09 69 66 20 28 62 6c 6f 63 6b 54 69 6d 65 2e +.if (blockTime.
1e40: 75 73 65 63 20 3c 20 30 29 20 7b 0a 2b 09 20 20 usec < 0) {.+.
1e50: 20 20 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 blockTime.sec
1e60: 2d 3d 20 31 3b 0a 2b 09 20 20 20 20 62 6c 6f 63 -= 1;.+. bloc
1e70: 6b 54 69 6d 65 2e 75 73 65 63 20 2b 3d 20 31 30 kTime.usec += 10
1e80: 30 30 30 30 30 3b 0a 2b 09 7d 0a 2b 09 69 66 20 00000;.+.}.+.if
1e90: 28 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 3c (blockTime.sec <
1ea0: 20 30 29 20 7b 0a 2b 09 20 20 20 20 62 6c 6f 63 0) {.+. bloc
1eb0: 6b 54 69 6d 65 2e 73 65 63 20 3d 20 30 3b 0a 2b kTime.sec = 0;.+
1ec0: 09 20 20 20 20 62 6c 6f 63 6b 54 69 6d 65 2e 75 . blockTime.u
1ed0: 73 65 63 20 3d 20 30 3b 0a 2b 09 7d 0a 2b 23 65 sec = 0;.+.}.+#e
1ee0: 6c 73 65 0a 2b 09 62 6c 6f 63 6b 54 69 6d 65 2e lse.+.blockTime.
1ef0: 73 65 63 20 3d 20 74 73 64 50 74 72 2d 3e 66 69 sec = tsdPtr->fi
1f00: 72 73 74 54 69 6d 65 72 48 61 6e 64 6c 65 72 50 rstTimerHandlerP
1f10: 74 72 2d 3e 74 69 6d 65 2e 73 65 63 20 2d 20 47 tr->time.sec - G
1f20: 65 74 54 69 63 6b 43 6f 75 6e 74 28 29 3b 0a 2b etTickCount();.+
1f30: 09 69 66 20 28 62 6c 6f 63 6b 54 69 6d 65 2e 73 .if (blockTime.s
1f40: 65 63 20 3c 3d 20 30 29 20 7b 0a 2b 09 20 20 20 ec <= 0) {.+.
1f50: 20 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 3d blockTime.sec =
1f60: 20 30 3b 0a 2b 09 20 20 20 20 62 6c 6f 63 6b 54 0;.+. blockT
1f70: 69 6d 65 2e 75 73 65 63 20 3d 20 30 3b 0a 2b 09 ime.usec = 0;.+.
1f80: 7d 20 65 6c 73 65 20 7b 0a 2b 09 20 20 20 20 62 } else {.+. b
1f90: 6c 6f 63 6b 54 69 6d 65 2e 75 73 65 63 20 3d 20 lockTime.usec =
1fa0: 28 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 25 (blockTime.sec %
1fb0: 20 31 30 30 30 29 20 2a 20 31 30 30 30 3b 0a 2b 1000) * 1000;.+
1fc0: 09 20 20 20 20 62 6c 6f 63 6b 54 69 6d 65 2e 73 . blockTime.s
1fd0: 65 63 20 2f 3d 20 31 30 30 30 3b 0a 2b 09 7d 0a ec /= 1000;.+.}.
1fe0: 2b 23 65 6e 64 69 66 0a 2b 23 65 6c 73 65 0a 2b +#endif.+#else.+
1ff0: 23 69 66 64 65 66 20 48 41 56 45 5f 43 4c 4f 43 #ifdef HAVE_CLOC
2000: 4b 5f 47 45 54 54 49 4d 45 0a 2b 09 73 74 72 75 K_GETTIME.+.stru
2010: 63 74 20 74 69 6d 65 73 70 65 63 20 74 73 3b 0a ct timespec ts;.
2020: 2b 0a 2b 09 69 66 20 28 63 6c 6f 63 6b 5f 67 65 +.+.if (clock_ge
2030: 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f ttime(CLOCK_MONO
2040: 54 4f 4e 49 43 2c 20 26 74 73 29 20 3d 3d 20 2d TONIC, &ts) == -
2050: 31 29 20 7b 0a 2b 09 20 20 20 20 63 6c 6f 63 6b 1) {.+. clock
2060: 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 52 _gettime(CLOCK_R
2070: 45 41 4c 54 49 4d 45 2c 20 26 74 73 29 3b 0a 2b EALTIME, &ts);.+
2080: 09 7d 0a 2b 09 62 6c 6f 63 6b 54 69 6d 65 2e 73 .}.+.blockTime.s
2090: 65 63 20 3d 20 74 73 2e 74 76 5f 73 65 63 3b 0a ec = ts.tv_sec;.
20a0: 2b 09 62 6c 6f 63 6b 54 69 6d 65 2e 75 73 65 63 +.blockTime.usec
20b0: 20 3d 20 74 73 2e 74 76 5f 6e 73 65 63 20 2f 20 = ts.tv_nsec /
20c0: 31 30 30 30 3b 0a 2b 23 65 6c 73 65 0a 20 09 54 1000;.+#else. .T
20d0: 63 6c 5f 47 65 74 54 69 6d 65 28 26 62 6c 6f 63 cl_GetTime(&bloc
20e0: 6b 54 69 6d 65 29 3b 0a 2b 23 65 6e 64 69 66 0a kTime);.+#endif.
20f0: 20 09 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 .blockTime.sec
2100: 3d 20 74 73 64 50 74 72 2d 3e 66 69 72 73 74 54 = tsdPtr->firstT
2110: 69 6d 65 72 48 61 6e 64 6c 65 72 50 74 72 2d 3e imerHandlerPtr->
2120: 74 69 6d 65 2e 73 65 63 20 2d 20 62 6c 6f 63 6b time.sec - block
2130: 54 69 6d 65 2e 73 65 63 3b 0a 20 09 62 6c 6f 63 Time.sec;. .bloc
2140: 6b 54 69 6d 65 2e 75 73 65 63 20 3d 20 74 73 64 kTime.usec = tsd
2150: 50 74 72 2d 3e 66 69 72 73 74 54 69 6d 65 72 48 Ptr->firstTimerH
2160: 61 6e 64 6c 65 72 50 74 72 2d 3e 74 69 6d 65 2e andlerPtr->time.
2170: 75 73 65 63 20 2d 0a 20 09 09 62 6c 6f 63 6b 54 usec -. ..blockT
2180: 69 6d 65 2e 75 73 65 63 3b 0a 40 40 20 2d 34 38 ime.usec;.@@ -48
2190: 30 2c 36 20 2b 35 38 39 2c 37 20 40 40 0a 20 09 0,6 +589,7 @@. .
21a0: 20 20 20 20 62 6c 6f 63 6b 54 69 6d 65 2e 73 65 blockTime.se
21b0: 63 20 3d 20 30 3b 0a 20 09 20 20 20 20 62 6c 6f c = 0;. . blo
21c0: 63 6b 54 69 6d 65 2e 75 73 65 63 20 3d 20 30 3b ckTime.usec = 0;
21d0: 0a 20 09 7d 0a 2b 23 65 6e 64 69 66 0a 20 0a 20 . .}.+#endif. .
21e0: 09 2f 2a 0a 20 09 20 2a 20 49 66 20 74 68 65 20 ./*. . * If the
21f0: 66 69 72 73 74 20 74 69 6d 65 72 20 68 61 73 20 first timer has
2200: 65 78 70 69 72 65 64 2c 20 73 74 69 63 6b 20 61 expired, stick a
2210: 6e 20 65 76 65 6e 74 20 6f 6e 20 74 68 65 20 71 n event on the q
2220: 75 65 75 65 2e 0a 40 40 20 2d 35 32 36 2c 36 20 ueue..@@ -526,6
2230: 2b 36 33 36 2c 31 32 20 40 40 0a 20 20 20 20 20 +636,12 @@.
2240: 54 63 6c 5f 54 69 6d 65 20 74 69 6d 65 3b 0a 20 Tcl_Time time;.
2250: 20 20 20 20 69 6e 74 20 63 75 72 72 65 6e 74 54 int currentT
2260: 69 6d 65 72 49 64 3b 0a 20 20 20 20 20 54 68 72 imerId;. Thr
2270: 65 61 64 53 70 65 63 69 66 69 63 44 61 74 61 20 eadSpecificData
2280: 2a 74 73 64 50 74 72 20 3d 20 49 6e 69 74 54 69 *tsdPtr = InitTi
2290: 6d 65 72 28 29 3b 0a 2b 23 69 66 64 65 66 20 48 mer();.+#ifdef H
22a0: 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d AVE_CLOCK_GETTIM
22b0: 45 0a 2b 20 20 20 20 73 74 72 75 63 74 20 74 69 E.+ struct ti
22c0: 6d 65 73 70 65 63 20 74 73 3b 0a 2b 23 65 6e 64 mespec ts;.+#end
22d0: 69 66 0a 2b 23 69 66 20 28 5f 57 49 4e 33 32 5f if.+#if (_WIN32_
22e0: 57 49 4e 4e 54 20 3e 3d 20 30 78 30 36 30 30 29 WINNT >= 0x0600)
22f0: 20 26 26 20 64 65 66 69 6e 65 64 28 57 49 4e 33 && defined(WIN3
2300: 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 29 2_USE_TICKCOUNT)
2310: 0a 2b 20 20 20 20 55 4c 4f 4e 47 4c 4f 4e 47 20 .+ ULONGLONG
2320: 74 69 63 6b 73 3b 0a 2b 23 65 6e 64 69 66 0a 20 ticks;.+#endif.
2330: 0a 20 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a . /*. *
2340: 20 44 6f 20 6e 6f 74 68 69 6e 67 20 69 66 20 74 Do nothing if t
2350: 69 6d 65 72 73 20 61 72 65 6e 27 74 20 65 6e 61 imers aren't ena
2360: 62 6c 65 64 2e 20 54 68 69 73 20 6c 65 61 76 65 bled. This leave
2370: 73 20 74 68 65 20 65 76 65 6e 74 20 6f 6e 20 74 s the event on t
2380: 68 65 0a 40 40 20 2d 35 36 34 2c 31 38 20 2b 36 he.@@ -564,18 +6
2390: 38 30 2c 34 31 20 40 40 0a 20 0a 20 20 20 20 20 80,41 @@. .
23a0: 74 73 64 50 74 72 2d 3e 74 69 6d 65 72 50 65 6e tsdPtr->timerPen
23b0: 64 69 6e 67 20 3d 20 30 3b 0a 20 20 20 20 20 63 ding = 0;. c
23c0: 75 72 72 65 6e 74 54 69 6d 65 72 49 64 20 3d 20 urrentTimerId =
23d0: 74 73 64 50 74 72 2d 3e 6c 61 73 74 54 69 6d 65 tsdPtr->lastTime
23e0: 72 49 64 3b 0a 2b 23 69 66 64 65 66 20 57 49 4e rId;.+#ifdef WIN
23f0: 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 32_USE_TICKCOUNT
2400: 0a 2b 23 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 .+#if (_WIN32_WI
2410: 4e 4e 54 20 3e 3d 20 30 78 30 36 30 30 29 0a 2b NNT >= 0x0600).+
2420: 20 20 20 20 74 69 63 6b 73 20 3d 20 47 65 74 54 ticks = GetT
2430: 69 63 6b 43 6f 75 6e 74 36 34 28 29 3b 0a 2b 20 ickCount64();.+
2440: 20 20 20 74 69 6d 65 2e 73 65 63 20 3d 20 74 69 time.sec = ti
2450: 63 6b 73 20 2f 20 31 30 30 30 3b 0a 2b 20 20 20 cks / 1000;.+
2460: 20 74 69 6d 65 2e 75 73 65 63 20 3d 20 28 74 69 time.usec = (ti
2470: 63 6b 73 20 25 20 31 30 30 30 29 20 2a 20 31 30 cks % 1000) * 10
2480: 30 30 3b 0a 2b 23 65 6c 73 65 0a 2b 20 20 20 20 00;.+#else.+
2490: 74 69 6d 65 2e 73 65 63 20 3d 20 47 65 74 54 69 time.sec = GetTi
24a0: 63 6b 43 6f 75 6e 74 28 29 3b 0a 2b 20 20 20 20 ckCount();.+
24b0: 74 69 6d 65 2e 75 73 65 63 20 3d 20 30 3b 0a 2b time.usec = 0;.+
24c0: 23 65 6e 64 69 66 0a 2b 23 65 6c 73 65 0a 2b 23 #endif.+#else.+#
24d0: 69 66 64 65 66 20 48 41 56 45 5f 43 4c 4f 43 4b ifdef HAVE_CLOCK
24e0: 5f 47 45 54 54 49 4d 45 0a 2b 20 20 20 20 69 66 _GETTIME.+ if
24f0: 20 28 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 (clock_gettime(
2500: 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e 49 43 2c CLOCK_MONOTONIC,
2510: 20 26 74 73 29 20 3d 3d 20 2d 31 29 20 7b 0a 2b &ts) == -1) {.+
2520: 09 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 43 .clock_gettime(C
2530: 4c 4f 43 4b 5f 52 45 41 4c 54 49 4d 45 2c 20 26 LOCK_REALTIME, &
2540: 74 73 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 ts);.+ }.+
2550: 20 74 69 6d 65 2e 73 65 63 20 3d 20 74 73 2e 74 time.sec = ts.t
2560: 76 5f 73 65 63 3b 0a 2b 20 20 20 20 74 69 6d 65 v_sec;.+ time
2570: 2e 75 73 65 63 20 3d 20 74 73 2e 74 76 5f 6e 73 .usec = ts.tv_ns
2580: 65 63 20 2f 20 31 30 30 30 3b 0a 2b 23 65 6c 73 ec / 1000;.+#els
2590: 65 0a 20 20 20 20 20 54 63 6c 5f 47 65 74 54 69 e. Tcl_GetTi
25a0: 6d 65 28 26 74 69 6d 65 29 3b 0a 2b 23 65 6e 64 me(&time);.+#end
25b0: 69 66 0a 2b 23 65 6e 64 69 66 0a 20 20 20 20 20 if.+#endif.
25c0: 77 68 69 6c 65 20 28 31 29 20 7b 0a 20 09 6e 65 while (1) {. .ne
25d0: 78 74 50 74 72 50 74 72 20 3d 20 26 74 73 64 50 xtPtrPtr = &tsdP
25e0: 74 72 2d 3e 66 69 72 73 74 54 69 6d 65 72 48 61 tr->firstTimerHa
25f0: 6e 64 6c 65 72 50 74 72 3b 0a 20 09 74 69 6d 65 ndlerPtr;. .time
2600: 72 48 61 6e 64 6c 65 72 50 74 72 20 3d 20 74 73 rHandlerPtr = ts
2610: 64 50 74 72 2d 3e 66 69 72 73 74 54 69 6d 65 72 dPtr->firstTimer
2620: 48 61 6e 64 6c 65 72 50 74 72 3b 0a 20 09 69 66 HandlerPtr;. .if
2630: 20 28 74 69 6d 65 72 48 61 6e 64 6c 65 72 50 74 (timerHandlerPt
2640: 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 20 r == NULL) {. .
2650: 20 20 20 62 72 65 61 6b 3b 0a 20 09 7d 0a 2d 0a break;. .}.-.
2660: 2b 23 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e +#if (_WIN32_WIN
2670: 4e 54 20 3c 20 30 78 30 36 30 30 29 20 26 26 20 NT < 0x0600) &&
2680: 64 65 66 69 6e 65 64 28 57 49 4e 33 32 5f 55 53 defined(WIN32_US
2690: 45 5f 54 49 43 4b 43 4f 55 4e 54 29 0a 2b 09 69 E_TICKCOUNT).+.i
26a0: 66 20 28 74 69 6d 65 2e 73 65 63 20 2d 20 74 69 f (time.sec - ti
26b0: 6d 65 72 48 61 6e 64 6c 65 72 50 74 72 2d 3e 74 merHandlerPtr->t
26c0: 69 6d 65 2e 73 65 63 20 3c 20 30 29 20 7b 0a 2b ime.sec < 0) {.+
26d0: 09 20 20 20 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a . break;.+.}.
26e0: 2b 23 65 6c 73 65 0a 20 09 69 66 20 28 54 43 4c +#else. .if (TCL
26f0: 5f 54 49 4d 45 5f 42 45 46 4f 52 45 28 74 69 6d _TIME_BEFORE(tim
2700: 65 2c 20 74 69 6d 65 72 48 61 6e 64 6c 65 72 50 e, timerHandlerP
2710: 74 72 2d 3e 74 69 6d 65 29 29 20 7b 0a 20 09 20 tr->time)) {. .
2720: 20 20 20 62 72 65 61 6b 3b 0a 20 09 7d 0a 2d 0a break;. .}.-.
2730: 2b 23 65 6e 64 69 66 0a 20 09 2f 2a 0a 20 09 20 +#endif. ./*. .
2740: 2a 20 42 61 69 6c 20 6f 75 74 20 69 66 20 74 68 * Bail out if th
2750: 65 20 6e 65 78 74 20 74 69 6d 65 72 20 69 73 20 e next timer is
2760: 6f 66 20 61 20 6e 65 77 65 72 20 67 65 6e 65 72 of a newer gener
2770: 61 74 69 6f 6e 2e 0a 20 09 20 2a 2f 0a 40 40 20 ation.. . */.@@
2780: 2d 38 34 35 2c 36 20 2b 39 38 34 2c 31 33 20 40 -845,6 +984,13 @
2790: 40 0a 20 0a 20 20 20 20 20 73 77 69 74 63 68 20 @. . switch
27a0: 28 69 6e 64 65 78 29 20 7b 0a 20 20 20 20 20 63 (index) {. c
27b0: 61 73 65 20 2d 31 3a 20 7b 0a 2b 23 69 66 64 65 ase -1: {.+#ifde
27c0: 66 20 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 f HAVE_CLOCK_GET
27d0: 54 49 4d 45 0a 2b 09 73 74 72 75 63 74 20 74 69 TIME.+.struct ti
27e0: 6d 65 73 70 65 63 20 74 73 3b 0a 2b 23 65 6e 64 mespec ts;.+#end
27f0: 69 66 0a 2b 23 69 66 20 28 5f 57 49 4e 33 32 5f if.+#if (_WIN32_
2800: 57 49 4e 4e 54 20 3e 3d 20 30 78 30 36 30 30 29 WINNT >= 0x0600)
2810: 20 26 26 20 64 65 66 69 6e 65 64 28 57 49 4e 33 && defined(WIN3
2820: 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 29 2_USE_TICKCOUNT)
2830: 0a 2b 09 55 4c 4f 4e 47 4c 4f 4e 47 20 74 69 63 .+.ULONGLONG tic
2840: 6b 73 3b 0a 2b 23 65 6e 64 69 66 0a 2b 0a 20 09 ks;.+#endif.+. .
2850: 69 66 20 28 6d 73 20 3c 20 30 29 20 7b 0a 20 09 if (ms < 0) {. .
2860: 20 20 20 20 6d 73 20 3d 20 30 3b 0a 20 09 7d 0a ms = 0;. .}.
2870: 40 40 20 2d 38 37 32 2c 31 33 20 2b 31 30 31 38 @@ -872,13 +1018
2880: 2c 34 33 20 40 40 0a 20 0a 20 09 61 66 74 65 72 ,43 @@. . .after
2890: 50 74 72 2d 3e 69 64 20 3d 20 74 73 64 50 74 72 Ptr->id = tsdPtr
28a0: 2d 3e 61 66 74 65 72 49 64 3b 0a 20 09 74 73 64 ->afterId;. .tsd
28b0: 50 74 72 2d 3e 61 66 74 65 72 49 64 20 2b 3d 20 Ptr->afterId +=
28c0: 31 3b 0a 2b 23 69 66 64 65 66 20 57 49 4e 33 32 1;.+#ifdef WIN32
28d0: 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 0a 2b _USE_TICKCOUNT.+
28e0: 23 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e #if (_WIN32_WINN
28f0: 54 20 3e 3d 20 30 78 30 36 30 30 29 0a 2b 09 74 T >= 0x0600).+.t
2900: 69 63 6b 73 20 3d 20 47 65 74 54 69 63 6b 43 6f icks = GetTickCo
2910: 75 6e 74 36 34 28 29 3b 0a 2b 09 77 61 6b 65 75 unt64();.+.wakeu
2920: 70 2e 73 65 63 20 3d 20 74 69 63 6b 73 20 2f 20 p.sec = ticks /
2930: 31 30 30 30 3b 0a 2b 09 77 61 6b 65 75 70 2e 75 1000;.+.wakeup.u
2940: 73 65 63 20 3d 20 28 74 69 63 6b 73 20 25 20 31 sec = (ticks % 1
2950: 30 30 30 29 20 2a 20 31 30 30 30 3b 0a 2b 09 77 000) * 1000;.+.w
2960: 61 6b 65 75 70 2e 73 65 63 20 2b 3d 20 28 6c 6f akeup.sec += (lo
2970: 6e 67 29 28 6d 73 20 2f 20 31 30 30 30 29 3b 0a ng)(ms / 1000);.
2980: 2b 09 77 61 6b 65 75 70 2e 75 73 65 63 20 2b 3d +.wakeup.usec +=
2990: 20 28 28 6c 6f 6e 67 29 28 6d 73 20 25 20 31 30 ((long)(ms % 10
29a0: 30 30 29 29 20 2a 20 31 30 30 30 3b 0a 2b 09 69 00)) * 1000;.+.i
29b0: 66 20 28 77 61 6b 65 75 70 2e 75 73 65 63 20 3e f (wakeup.usec >
29c0: 20 31 30 30 30 30 30 30 29 20 7b 0a 2b 09 20 20 1000000) {.+.
29d0: 20 20 77 61 6b 65 75 70 2e 73 65 63 2b 2b 3b 0a wakeup.sec++;.
29e0: 2b 09 20 20 20 20 77 61 6b 65 75 70 2e 75 73 65 +. wakeup.use
29f0: 63 20 2d 3d 20 31 30 30 30 30 30 30 3b 0a 2b 09 c -= 1000000;.+.
2a00: 7d 0a 2b 23 65 6c 73 65 0a 2b 09 69 66 20 28 6d }.+#else.+.if (m
2a10: 73 20 3e 20 30 78 37 46 46 46 46 46 46 46 29 20 s > 0x7FFFFFFF)
2a20: 7b 0a 2b 09 20 20 20 20 6d 73 20 3d 20 30 78 37 {.+. ms = 0x7
2a30: 46 46 46 46 46 46 46 3b 0a 2b 09 7d 20 65 6c 73 FFFFFFF;.+.} els
2a40: 65 20 69 66 20 28 6d 73 20 3c 20 30 29 20 7b 0a e if (ms < 0) {.
2a50: 2b 09 20 20 20 20 6d 73 20 3d 20 30 3b 0a 2b 09 +. ms = 0;.+.
2a60: 7d 0a 2b 09 77 61 6b 65 75 70 2e 73 65 63 20 3d }.+.wakeup.sec =
2a70: 20 6d 73 20 2b 20 47 65 74 54 69 63 6b 43 6f 75 ms + GetTickCou
2a80: 6e 74 28 29 3b 0a 2b 09 77 61 6b 65 75 70 2e 75 nt();.+.wakeup.u
2a90: 73 65 63 20 3d 20 30 3b 0a 2b 23 65 6e 64 69 66 sec = 0;.+#endif
2aa0: 0a 2b 23 65 6c 73 65 0a 2b 23 69 66 64 65 66 20 .+#else.+#ifdef
2ab0: 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 HAVE_CLOCK_GETTI
2ac0: 4d 45 0a 2b 09 69 66 20 28 63 6c 6f 63 6b 5f 67 ME.+.if (clock_g
2ad0: 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e ettime(CLOCK_MON
2ae0: 4f 54 4f 4e 49 43 2c 20 26 74 73 29 20 3d 3d 20 OTONIC, &ts) ==
2af0: 2d 31 29 20 7b 0a 2b 09 20 20 20 20 63 6c 6f 63 -1) {.+. cloc
2b00: 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f k_gettime(CLOCK_
2b10: 52 45 41 4c 54 49 4d 45 2c 20 26 74 73 29 3b 0a REALTIME, &ts);.
2b20: 2b 09 7d 0a 2b 09 77 61 6b 65 75 70 2e 73 65 63 +.}.+.wakeup.sec
2b30: 20 3d 20 74 73 2e 74 76 5f 73 65 63 3b 0a 2b 09 = ts.tv_sec;.+.
2b40: 77 61 6b 65 75 70 2e 75 73 65 63 20 3d 20 74 73 wakeup.usec = ts
2b50: 2e 74 76 5f 6e 73 65 63 20 2f 20 31 30 30 30 3b .tv_nsec / 1000;
2b60: 0a 2b 23 65 6c 73 65 0a 20 09 54 63 6c 5f 47 65 .+#else. .Tcl_Ge
2b70: 74 54 69 6d 65 28 26 77 61 6b 65 75 70 29 3b 0a tTime(&wakeup);.
2b80: 2b 23 65 6e 64 69 66 0a 20 09 77 61 6b 65 75 70 +#endif. .wakeup
2b90: 2e 73 65 63 20 2b 3d 20 28 6c 6f 6e 67 29 28 6d .sec += (long)(m
2ba0: 73 20 2f 20 31 30 30 30 29 3b 0a 20 09 77 61 6b s / 1000);. .wak
2bb0: 65 75 70 2e 75 73 65 63 20 2b 3d 20 28 28 6c 6f eup.usec += ((lo
2bc0: 6e 67 29 28 6d 73 20 25 20 31 30 30 30 29 29 20 ng)(ms % 1000))
2bd0: 2a 20 31 30 30 30 3b 0a 20 09 69 66 20 28 77 61 * 1000;. .if (wa
2be0: 6b 65 75 70 2e 75 73 65 63 20 3e 20 31 30 30 30 keup.usec > 1000
2bf0: 30 30 30 29 20 7b 0a 20 09 20 20 20 20 77 61 6b 000) {. . wak
2c00: 65 75 70 2e 73 65 63 2b 2b 3b 0a 20 09 20 20 20 eup.sec++;. .
2c10: 20 77 61 6b 65 75 70 2e 75 73 65 63 20 2d 3d 20 wakeup.usec -=
2c20: 31 30 30 30 30 30 30 3b 0a 20 09 7d 0a 2b 23 65 1000000;. .}.+#e
2c30: 6e 64 69 66 0a 20 09 61 66 74 65 72 50 74 72 2d ndif. .afterPtr-
2c40: 3e 74 6f 6b 65 6e 20 3d 20 54 63 6c 43 72 65 61 >token = TclCrea
2c50: 74 65 41 62 73 6f 6c 75 74 65 54 69 6d 65 72 48 teAbsoluteTimerH
2c60: 61 6e 64 6c 65 72 28 26 77 61 6b 65 75 70 2c 0a andler(&wakeup,.
2c70: 20 09 09 41 66 74 65 72 50 72 6f 63 2c 20 61 66 ..AfterProc, af
2c80: 74 65 72 50 74 72 29 3b 0a 20 09 61 66 74 65 72 terPtr);. .after
2c90: 50 74 72 2d 3e 6e 65 78 74 50 74 72 20 3d 20 61 Ptr->nextPtr = a
2ca0: 73 73 6f 63 50 74 72 2d 3e 66 69 72 73 74 41 66 ssocPtr->firstAf
2cb0: 74 65 72 50 74 72 3b 0a 40 40 20 2d 31 30 31 32 terPtr;.@@ -1012
2cc0: 2c 31 32 20 2b 31 31 38 38 2c 34 39 20 40 40 0a ,12 +1188,49 @@.
2cd0: 20 20 20 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 Tcl_Interp
2ce0: 2a 69 6e 74 65 72 70 2c 0a 20 20 20 20 20 54 63 *interp,. Tc
2cf0: 6c 5f 57 69 64 65 49 6e 74 20 6d 73 29 0a 20 7b l_WideInt ms). {
2d00: 0a 2b 20 20 20 20 54 63 6c 5f 54 69 6d 65 20 65 .+ Tcl_Time e
2d10: 6e 64 54 69 6d 65 2c 20 6e 6f 77 3b 0a 2b 23 69 ndTime, now;.+#i
2d20: 66 64 65 66 20 57 49 4e 33 32 5f 55 53 45 5f 54 fdef WIN32_USE_T
2d30: 49 43 4b 43 4f 55 4e 54 0a 2b 23 69 66 20 28 5f ICKCOUNT.+#if (_
2d40: 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 WIN32_WINNT >= 0
2d50: 78 30 36 30 30 29 0a 20 20 20 20 20 49 6e 74 65 x0600). Inte
2d60: 72 70 20 2a 69 50 74 72 20 3d 20 28 49 6e 74 65 rp *iPtr = (Inte
2d70: 72 70 20 2a 29 20 69 6e 74 65 72 70 3b 0a 2b 20 rp *) interp;.+
2d80: 20 20 20 55 4c 4f 4e 47 4c 4f 4e 47 20 74 69 63 ULONGLONG tic
2d90: 6b 73 20 3d 20 47 65 74 54 69 63 6b 43 6f 75 6e ks = GetTickCoun
2da0: 74 36 34 28 29 3b 0a 2b 20 20 20 20 54 63 6c 5f t64();.+ Tcl_
2db0: 57 69 64 65 49 6e 74 20 64 69 66 66 3b 0a 20 0a WideInt diff;. .
2dc0: 2d 20 20 20 20 54 63 6c 5f 54 69 6d 65 20 65 6e - Tcl_Time en
2dd0: 64 54 69 6d 65 2c 20 6e 6f 77 3b 0a 2b 20 20 20 dTime, now;.+
2de0: 20 6e 6f 77 2e 73 65 63 20 3d 20 74 69 63 6b 73 now.sec = ticks
2df0: 2f 31 30 30 30 3b 0a 2b 20 20 20 20 6e 6f 77 2e /1000;.+ now.
2e00: 75 73 65 63 20 3d 20 28 74 69 63 6b 73 25 31 30 usec = (ticks%10
2e10: 30 30 29 2a 31 30 30 30 3b 0a 2b 20 20 20 20 65 00)*1000;.+ e
2e20: 6e 64 54 69 6d 65 20 3d 20 6e 6f 77 3b 0a 2b 20 ndTime = now;.+
2e30: 20 20 20 65 6e 64 54 69 6d 65 2e 73 65 63 20 2b endTime.sec +
2e40: 3d 20 28 6c 6f 6e 67 29 28 6d 73 2f 31 30 30 30 = (long)(ms/1000
2e50: 29 3b 0a 2b 20 20 20 20 65 6e 64 54 69 6d 65 2e );.+ endTime.
2e60: 75 73 65 63 20 2b 3d 20 28 28 69 6e 74 29 28 6d usec += ((int)(m
2e70: 73 25 31 30 30 30 29 29 2a 31 30 30 30 3b 0a 2b s%1000))*1000;.+
2e80: 20 20 20 20 69 66 20 28 65 6e 64 54 69 6d 65 2e if (endTime.
2e90: 75 73 65 63 20 3e 3d 20 31 30 30 30 30 30 30 29 usec >= 1000000)
2ea0: 20 7b 0a 2b 09 65 6e 64 54 69 6d 65 2e 73 65 63 {.+.endTime.sec
2eb0: 2b 2b 3b 0a 2b 09 65 6e 64 54 69 6d 65 2e 75 73 ++;.+.endTime.us
2ec0: 65 63 20 2d 3d 20 31 30 30 30 30 30 30 3b 0a 2b ec -= 1000000;.+
2ed0: 20 20 20 20 7d 0a 2b 23 65 6c 73 65 0a 2b 20 20 }.+#else.+
2ee0: 20 20 69 6e 74 20 64 69 66 66 3b 0a 2b 0a 2b 20 int diff;.+.+
2ef0: 20 20 20 6e 6f 77 2e 73 65 63 20 3d 20 47 65 74 now.sec = Get
2f00: 54 69 63 6b 43 6f 75 6e 74 28 29 3b 0a 2b 20 20 TickCount();.+
2f10: 20 20 6e 6f 77 2e 75 73 65 63 20 3d 20 30 3b 0a now.usec = 0;.
2f20: 2b 20 20 20 20 69 66 20 28 6d 73 20 3e 20 30 78 + if (ms > 0x
2f30: 37 46 46 46 46 46 46 46 29 20 7b 0a 2b 09 6d 73 7FFFFFFF) {.+.ms
2f40: 20 3d 20 30 78 37 46 46 46 46 46 46 46 3b 0a 2b = 0x7FFFFFFF;.+
2f50: 20 20 20 20 7d 20 65 6c 73 65 20 69 66 20 28 6d } else if (m
2f60: 73 20 3c 20 30 29 20 7b 0a 2b 09 6d 73 20 3d 20 s < 0) {.+.ms =
2f70: 30 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 65 0;.+ }.+ e
2f80: 6e 64 54 69 6d 65 2e 73 65 63 20 3d 20 6e 6f 77 ndTime.sec = now
2f90: 2e 73 65 63 20 2b 20 6d 73 3b 0a 2b 20 20 20 20 .sec + ms;.+
2fa0: 65 6e 64 54 69 6d 65 2e 75 73 65 63 20 3d 20 30 endTime.usec = 0
2fb0: 3b 0a 2b 23 65 6e 64 69 66 0a 2b 23 65 6c 73 65 ;.+#endif.+#else
2fc0: 0a 2b 20 20 20 20 49 6e 74 65 72 70 20 2a 69 50 .+ Interp *iP
2fd0: 74 72 20 3d 20 28 49 6e 74 65 72 70 20 2a 29 20 tr = (Interp *)
2fe0: 69 6e 74 65 72 70 3b 0a 20 20 20 20 20 54 63 6c interp;. Tcl
2ff0: 5f 57 69 64 65 49 6e 74 20 64 69 66 66 3b 0a 2b _WideInt diff;.+
3000: 23 69 66 64 65 66 20 48 41 56 45 5f 43 4c 4f 43 #ifdef HAVE_CLOC
3010: 4b 5f 47 45 54 54 49 4d 45 0a 2b 20 20 20 20 73 K_GETTIME.+ s
3020: 74 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 74 truct timespec t
3030: 73 3b 0a 20 0a 2b 20 20 20 20 69 66 20 28 63 6c s;. .+ if (cl
3040: 6f 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 ock_gettime(CLOC
3050: 4b 5f 4d 4f 4e 4f 54 4f 4e 49 43 2c 20 26 74 73 K_MONOTONIC, &ts
3060: 29 20 3d 3d 20 2d 31 29 20 7b 0a 2b 09 63 6c 6f ) == -1) {.+.clo
3070: 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b ck_gettime(CLOCK
3080: 5f 52 45 41 4c 54 49 4d 45 2c 20 26 74 73 29 3b _REALTIME, &ts);
3090: 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 6e 6f 77 .+ }.+ now
30a0: 2e 73 65 63 20 3d 20 74 73 2e 74 76 5f 73 65 63 .sec = ts.tv_sec
30b0: 3b 0a 2b 20 20 20 20 6e 6f 77 2e 75 73 65 63 20 ;.+ now.usec
30c0: 3d 20 74 73 2e 74 76 5f 6e 73 65 63 2f 31 30 30 = ts.tv_nsec/100
30d0: 30 3b 0a 2b 23 65 6c 73 65 0a 20 20 20 20 20 54 0;.+#else. T
30e0: 63 6c 5f 47 65 74 54 69 6d 65 28 26 6e 6f 77 29 cl_GetTime(&now)
30f0: 3b 0a 2b 23 65 6e 64 69 66 0a 20 20 20 20 20 65 ;.+#endif. e
3100: 6e 64 54 69 6d 65 20 3d 20 6e 6f 77 3b 0a 20 20 ndTime = now;.
3110: 20 20 20 65 6e 64 54 69 6d 65 2e 73 65 63 20 2b endTime.sec +
3120: 3d 20 28 6c 6f 6e 67 29 28 6d 73 2f 31 30 30 30 = (long)(ms/1000
3130: 29 3b 0a 20 20 20 20 20 65 6e 64 54 69 6d 65 2e );. endTime.
3140: 75 73 65 63 20 2b 3d 20 28 28 69 6e 74 29 28 6d usec += ((int)(m
3150: 73 25 31 30 30 30 29 29 2a 31 30 30 30 3b 0a 40 s%1000))*1000;.@
3160: 40 20 2d 31 30 32 35 2c 36 20 2b 31 32 33 38 2c @ -1025,6 +1238,
3170: 37 20 40 40 0a 20 09 65 6e 64 54 69 6d 65 2e 73 7 @@. .endTime.s
3180: 65 63 2b 2b 3b 0a 20 09 65 6e 64 54 69 6d 65 2e ec++;. .endTime.
3190: 75 73 65 63 20 2d 3d 20 31 30 30 30 30 30 30 3b usec -= 1000000;
31a0: 0a 20 20 20 20 20 7d 0a 2b 23 65 6e 64 69 66 0a . }.+#endif.
31b0: 20 0a 20 20 20 20 20 64 6f 20 7b 0a 20 09 69 66 . do {. .if
31c0: 20 28 54 63 6c 5f 41 73 79 6e 63 52 65 61 64 79 (Tcl_AsyncReady
31d0: 28 29 29 20 7b 0a 40 40 20 2d 31 30 33 35 2c 36 ()) {.@@ -1035,6
31e0: 20 2b 31 32 34 39 2c 31 35 20 40 40 0a 20 09 69 +1249,15 @@. .i
31f0: 66 20 28 54 63 6c 5f 43 61 6e 63 65 6c 65 64 28 f (Tcl_Canceled(
3200: 69 6e 74 65 72 70 2c 20 54 43 4c 5f 4c 45 41 56 interp, TCL_LEAV
3210: 45 5f 45 52 52 5f 4d 53 47 29 20 3d 3d 20 54 43 E_ERR_MSG) == TC
3220: 4c 5f 45 52 52 4f 52 29 20 7b 0a 20 09 20 20 20 L_ERROR) {. .
3230: 20 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f return TCL_ERRO
3240: 52 3b 0a 20 09 7d 0a 2b 23 69 66 20 28 5f 57 49 R;. .}.+#if (_WI
3250: 4e 33 32 5f 57 49 4e 4e 54 20 3c 20 30 78 30 36 N32_WINNT < 0x06
3260: 30 30 29 20 26 26 20 64 65 66 69 6e 65 64 28 57 00) && defined(W
3270: 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 IN32_USE_TICKCOU
3280: 4e 54 29 0a 2b 09 64 69 66 66 20 3d 20 65 6e 64 NT).+.diff = end
3290: 54 69 6d 65 2e 73 65 63 20 2d 20 6e 6f 77 2e 73 Time.sec - now.s
32a0: 65 63 3b 0a 2b 09 69 66 20 28 64 69 66 66 20 3e ec;.+.if (diff >
32b0: 20 30 29 20 7b 0a 2b 09 20 20 20 20 54 63 6c 5f 0) {.+. Tcl_
32c0: 53 6c 65 65 70 28 28 6c 6f 6e 67 29 20 64 69 66 Sleep((long) dif
32d0: 66 29 3b 0a 2b 09 7d 20 65 6c 73 65 20 7b 0a 2b f);.+.} else {.+
32e0: 09 20 20 20 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a . break;.+.}.
32f0: 2b 09 6e 6f 77 2e 73 65 63 20 3d 20 47 65 74 54 +.now.sec = GetT
3300: 69 63 6b 43 6f 75 6e 74 28 29 3b 0a 2b 23 65 6c ickCount();.+#el
3310: 73 65 0a 20 09 69 66 20 28 69 50 74 72 2d 3e 6c se. .if (iPtr->l
3320: 69 6d 69 74 2e 74 69 6d 65 45 76 65 6e 74 20 21 imit.timeEvent !
3330: 3d 20 4e 55 4c 4c 0a 20 09 09 26 26 20 54 43 4c = NULL. ..&& TCL
3340: 5f 54 49 4d 45 5f 42 45 46 4f 52 45 28 69 50 74 _TIME_BEFORE(iPt
3350: 72 2d 3e 6c 69 6d 69 74 2e 74 69 6d 65 2c 20 6e r->limit.time, n
3360: 6f 77 29 29 20 7b 0a 20 09 20 20 20 20 69 50 74 ow)) {. . iPt
3370: 72 2d 3e 6c 69 6d 69 74 2e 67 72 61 6e 75 6c 61 r->limit.granula
3380: 72 69 74 79 54 69 63 6b 65 72 20 3d 20 30 3b 0a rityTicker = 0;.
3390: 40 40 20 2d 31 30 38 33 2c 38 20 2b 31 33 30 36 @@ -1083,8 +1306
33a0: 2c 32 38 20 40 40 0a 20 09 09 72 65 74 75 72 6e ,28 @@. ..return
33b0: 20 54 43 4c 5f 45 52 52 4f 52 3b 0a 20 09 20 20 TCL_ERROR;. .
33c0: 20 20 7d 0a 20 09 7d 0a 2b 23 69 66 20 28 5f 57 }. .}.+#if (_W
33d0: 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 IN32_WINNT >= 0x
33e0: 30 36 30 30 29 20 26 26 20 64 65 66 69 6e 65 64 0600) && defined
33f0: 28 57 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 (WIN32_USE_TICKC
3400: 4f 55 4e 54 29 0a 2b 09 74 69 63 6b 73 20 3d 20 OUNT).+.ticks =
3410: 47 65 74 54 69 63 6b 43 6f 75 6e 74 36 34 28 29 GetTickCount64()
3420: 3b 0a 2b 09 6e 6f 77 2e 73 65 63 20 3d 20 74 69 ;.+.now.sec = ti
3430: 63 6b 73 20 2f 20 31 30 30 30 3b 0a 2b 09 6e 6f cks / 1000;.+.no
3440: 77 2e 75 73 65 63 20 3d 20 28 74 69 63 6b 73 20 w.usec = (ticks
3450: 25 20 31 30 30 30 29 20 2a 20 31 30 30 30 3b 0a % 1000) * 1000;.
3460: 2b 23 65 6c 73 65 0a 2b 23 69 66 64 65 66 20 48 +#else.+#ifdef H
3470: 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d AVE_CLOCK_GETTIM
3480: 45 0a 2b 09 69 66 20 28 63 6c 6f 63 6b 5f 67 65 E.+.if (clock_ge
3490: 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f ttime(CLOCK_MONO
34a0: 54 4f 4e 49 43 2c 20 26 74 73 29 20 3d 3d 20 2d TONIC, &ts) == -
34b0: 31 29 20 7b 0a 2b 09 20 20 20 20 63 6c 6f 63 6b 1) {.+. clock
34c0: 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 52 _gettime(CLOCK_R
34d0: 45 41 4c 54 49 4d 45 2c 20 26 74 73 29 3b 0a 2b EALTIME, &ts);.+
34e0: 09 7d 0a 2b 09 6e 6f 77 2e 73 65 63 20 3d 20 74 .}.+.now.sec = t
34f0: 73 2e 74 76 5f 73 65 63 3b 0a 2b 09 6e 6f 77 2e s.tv_sec;.+.now.
3500: 75 73 65 63 20 3d 20 74 73 2e 74 76 5f 6e 73 65 usec = ts.tv_nse
3510: 63 20 2f 20 31 30 30 30 3b 0a 2b 23 65 6c 73 65 c / 1000;.+#else
3520: 0a 20 20 20 20 20 20 20 20 20 54 63 6c 5f 47 65 . Tcl_Ge
3530: 74 54 69 6d 65 28 26 6e 6f 77 29 3b 0a 2d 20 20 tTime(&now);.-
3540: 20 20 7d 20 77 68 69 6c 65 20 28 54 43 4c 5f 54 } while (TCL_T
3550: 49 4d 45 5f 42 45 46 4f 52 45 28 6e 6f 77 2c 20 IME_BEFORE(now,
3560: 65 6e 64 54 69 6d 65 29 29 3b 0a 2b 23 65 6e 64 endTime));.+#end
3570: 69 66 0a 2b 23 65 6e 64 69 66 0a 2b 23 65 6e 64 if.+#endif.+#end
3580: 69 66 0a 2b 20 20 20 20 7d 0a 2b 23 69 66 20 28 if.+ }.+#if (
3590: 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3c 20 30 _WIN32_WINNT < 0
35a0: 78 30 36 30 30 29 20 26 26 20 64 65 66 69 6e 65 x0600) && define
35b0: 64 28 57 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b d(WIN32_USE_TICK
35c0: 43 4f 55 4e 54 29 0a 2b 20 20 20 20 77 68 69 6c COUNT).+ whil
35d0: 65 20 28 6e 6f 77 2e 73 65 63 20 2d 20 65 6e 64 e (now.sec - end
35e0: 54 69 6d 65 2e 73 65 63 20 3c 20 30 29 3b 0a 2b Time.sec < 0);.+
35f0: 23 65 6c 73 65 0a 2b 20 20 20 20 77 68 69 6c 65 #else.+ while
3600: 20 28 54 43 4c 5f 54 49 4d 45 5f 42 45 46 4f 52 (TCL_TIME_BEFOR
3610: 45 28 6e 6f 77 2c 20 65 6e 64 54 69 6d 65 29 29 E(now, endTime))
3620: 3b 0a 2b 23 65 6e 64 69 66 0a 20 20 20 20 20 72 ;.+#endif. r
3630: 65 74 75 72 6e 20 54 43 4c 5f 4f 4b 3b 0a 20 7d eturn TCL_OK;. }
3640: 0a 20 0c 0a 64 69 66 66 20 2d 75 72 20 74 63 6c . ..diff -ur tcl
3650: 38 2e 36 2e 35 2d 6f 72 69 67 2f 75 6e 69 78 2f 8.6.5-orig/unix/
3660: 63 6f 6e 66 69 67 75 72 65 20 74 63 6c 38 2e 36 configure tcl8.6
3670: 2e 35 2f 75 6e 69 78 2f 63 6f 6e 66 69 67 75 72 .5/unix/configur
3680: 65 0a 2d 2d 2d 20 74 63 6c 38 2e 36 2e 35 2d 6f e.--- tcl8.6.5-o
3690: 72 69 67 2f 75 6e 69 78 2f 63 6f 6e 66 69 67 75 rig/unix/configu
36a0: 72 65 09 32 30 31 36 2d 30 32 2d 32 39 20 32 30 re.2016-02-29 20
36b0: 3a 31 33 3a 30 38 2e 30 30 30 30 30 30 30 30 30 :13:08.000000000
36c0: 20 2b 30 31 30 30 0a 2b 2b 2b 20 74 63 6c 38 2e +0100.+++ tcl8.
36d0: 36 2e 35 2f 75 6e 69 78 2f 63 6f 6e 66 69 67 75 6.5/unix/configu
36e0: 72 65 09 32 30 31 36 2d 30 33 2d 32 35 20 30 36 re.2016-03-25 06
36f0: 3a 35 31 3a 34 39 2e 30 30 30 30 30 30 30 30 30 :51:49.000000000
3700: 20 2b 30 31 30 30 0a 40 40 20 2d 34 32 30 39 2c +0100.@@ -4209,
3710: 37 20 2b 34 32 30 39 2c 37 20 40 40 0a 20 0a 20 7 +4209,7 @@. .
3720: 09 61 63 5f 73 61 76 65 64 5f 6c 69 62 73 3d 24 .ac_saved_libs=$
3730: 4c 49 42 53 0a 20 09 4c 49 42 53 3d 22 24 4c 49 LIBS. .LIBS="$LI
3740: 42 53 20 24 54 48 52 45 41 44 53 5f 4c 49 42 53 BS $THREADS_LIBS
3750: 22 0a 2d 09 66 6f 72 20 61 63 5f 66 75 6e 63 20 ".-.for ac_func
3760: 69 6e 20 70 74 68 72 65 61 64 5f 61 74 74 72 5f in pthread_attr_
3770: 73 65 74 73 74 61 63 6b 73 69 7a 65 20 70 74 68 setstacksize pth
3780: 72 65 61 64 5f 61 74 66 6f 72 6b 0a 2b 09 66 6f read_atfork.+.fo
3790: 72 20 61 63 5f 66 75 6e 63 20 69 6e 20 70 74 68 r ac_func in pth
37a0: 72 65 61 64 5f 61 74 74 72 5f 73 65 74 73 74 61 read_attr_setsta
37b0: 63 6b 73 69 7a 65 20 70 74 68 72 65 61 64 5f 61 cksize pthread_a
37c0: 74 66 6f 72 6b 20 70 74 68 72 65 61 64 5f 63 6f tfork pthread_co
37d0: 6e 64 61 74 74 72 5f 73 65 74 63 6c 6f 63 6b 0a ndattr_setclock.
37e0: 20 64 6f 20 3a 0a 20 20 20 61 73 5f 61 63 5f 76 do :. as_ac_v
37f0: 61 72 3d 60 24 61 73 5f 65 63 68 6f 20 22 61 63 ar=`$as_echo "ac
3800: 5f 63 76 5f 66 75 6e 63 5f 24 61 63 5f 66 75 6e _cv_func_$ac_fun
3810: 63 22 20 7c 20 24 61 73 5f 74 72 5f 73 68 60 0a c" | $as_tr_sh`.
3820: 20 61 63 5f 66 6e 5f 63 5f 63 68 65 63 6b 5f 66 ac_fn_c_check_f
3830: 75 6e 63 20 22 24 4c 49 4e 45 4e 4f 22 20 22 24 unc "$LINENO" "$
3840: 61 63 5f 66 75 6e 63 22 20 22 24 61 73 5f 61 63 ac_func" "$as_ac
3850: 5f 76 61 72 22 0a 40 40 20 2d 34 35 30 39 2c 36 _var".@@ -4509,6
3860: 20 2b 34 35 30 39 2c 35 39 20 40 40 0a 20 66 69 +4509,59 @@. fi
3870: 0a 20 0a 20 0a 2b 20 20 20 20 7b 20 24 61 73 5f . . .+ { $as_
3880: 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 7b 61 echo "$as_me:${a
3890: 73 5f 6c 69 6e 65 6e 6f 2d 24 4c 49 4e 45 4e 4f s_lineno-$LINENO
38a0: 7d 3a 20 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 }: checking for
38b0: 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 20 69 6e clock_gettime in
38c0: 20 2d 6c 72 74 22 20 3e 26 35 0a 2b 24 61 73 5f -lrt" >&5.+$as_
38d0: 65 63 68 6f 5f 6e 20 22 63 68 65 63 6b 69 6e 67 echo_n "checking
38e0: 20 66 6f 72 20 63 6c 6f 63 6b 5f 67 65 74 74 69 for clock_getti
38f0: 6d 65 20 69 6e 20 2d 6c 72 74 2e 2e 2e 20 22 20 me in -lrt... "
3900: 3e 26 36 3b 20 7d 0a 2b 69 66 20 24 7b 61 63 5f >&6; }.+if ${ac_
3910: 63 76 5f 6c 69 62 5f 72 74 5f 63 6c 6f 63 6b 5f cv_lib_rt_clock_
3920: 67 65 74 74 69 6d 65 2b 3a 7d 20 66 61 6c 73 65 gettime+:} false
3930: 3b 20 74 68 65 6e 20 3a 0a 2b 20 20 24 61 73 5f ; then :.+ $as_
3940: 65 63 68 6f 5f 6e 20 22 28 63 61 63 68 65 64 29 echo_n "(cached)
3950: 20 22 20 3e 26 36 0a 2b 65 6c 73 65 0a 2b 20 20 " >&6.+else.+
3960: 61 63 5f 63 68 65 63 6b 5f 6c 69 62 5f 73 61 76 ac_check_lib_sav
3970: 65 5f 4c 49 42 53 3d 24 4c 49 42 53 0a 2b 4c 49 e_LIBS=$LIBS.+LI
3980: 42 53 3d 22 2d 6c 72 74 20 20 24 4c 49 42 53 22 BS="-lrt $LIBS"
3990: 0a 2b 63 61 74 20 63 6f 6e 66 64 65 66 73 2e 68 .+cat confdefs.h
39a0: 20 2d 20 3c 3c 5f 41 43 45 4f 46 20 3e 63 6f 6e - <<_ACEOF >con
39b0: 66 74 65 73 74 2e 24 61 63 5f 65 78 74 0a 2b 2f ftest.$ac_ext.+/
39c0: 2a 20 65 6e 64 20 63 6f 6e 66 64 65 66 73 2e 68 * end confdefs.h
39d0: 2e 20 20 2a 2f 0a 2b 0a 2b 2f 2a 20 4f 76 65 72 . */.+.+/* Over
39e0: 72 69 64 65 20 61 6e 79 20 47 43 43 20 69 6e 74 ride any GCC int
39f0: 65 72 6e 61 6c 20 70 72 6f 74 6f 74 79 70 65 20 ernal prototype
3a00: 74 6f 20 61 76 6f 69 64 20 61 6e 20 65 72 72 6f to avoid an erro
3a10: 72 2e 0a 2b 20 20 20 55 73 65 20 63 68 61 72 20 r..+ Use char
3a20: 62 65 63 61 75 73 65 20 69 6e 74 20 6d 69 67 68 because int migh
3a30: 74 20 6d 61 74 63 68 20 74 68 65 20 72 65 74 75 t match the retu
3a40: 72 6e 20 74 79 70 65 20 6f 66 20 61 20 47 43 43 rn type of a GCC
3a50: 0a 2b 20 20 20 62 75 69 6c 74 69 6e 20 61 6e 64 .+ builtin and
3a60: 20 74 68 65 6e 20 69 74 73 20 61 72 67 75 6d 65 then its argume
3a70: 6e 74 20 70 72 6f 74 6f 74 79 70 65 20 77 6f 75 nt prototype wou
3a80: 6c 64 20 73 74 69 6c 6c 20 61 70 70 6c 79 2e 20 ld still apply.
3a90: 20 2a 2f 0a 2b 23 69 66 64 65 66 20 5f 5f 63 70 */.+#ifdef __cp
3aa0: 6c 75 73 70 6c 75 73 0a 2b 65 78 74 65 72 6e 20 lusplus.+extern
3ab0: 22 43 22 0a 2b 23 65 6e 64 69 66 0a 2b 63 68 61 "C".+#endif.+cha
3ac0: 72 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 20 r clock_gettime
3ad0: 28 29 3b 0a 2b 69 6e 74 0a 2b 6d 61 69 6e 20 28 ();.+int.+main (
3ae0: 29 0a 2b 7b 0a 2b 72 65 74 75 72 6e 20 63 6c 6f ).+{.+return clo
3af0: 63 6b 5f 67 65 74 74 69 6d 65 20 28 29 3b 0a 2b ck_gettime ();.+
3b00: 20 20 3b 0a 2b 20 20 72 65 74 75 72 6e 20 30 3b ;.+ return 0;
3b10: 0a 2b 7d 0a 2b 5f 41 43 45 4f 46 0a 2b 69 66 20 .+}.+_ACEOF.+if
3b20: 61 63 5f 66 6e 5f 63 5f 74 72 79 5f 6c 69 6e 6b ac_fn_c_try_link
3b30: 20 22 24 4c 49 4e 45 4e 4f 22 3b 20 74 68 65 6e "$LINENO"; then
3b40: 20 3a 0a 2b 20 20 61 63 5f 63 76 5f 6c 69 62 5f :.+ ac_cv_lib_
3b50: 72 74 5f 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 rt_clock_gettime
3b60: 3d 79 65 73 0a 2b 65 6c 73 65 0a 2b 20 20 61 63 =yes.+else.+ ac
3b70: 5f 63 76 5f 6c 69 62 5f 72 74 5f 63 6c 6f 63 6b _cv_lib_rt_clock
3b80: 5f 67 65 74 74 69 6d 65 3d 6e 6f 0a 2b 66 69 0a _gettime=no.+fi.
3b90: 2b 72 6d 20 2d 66 20 63 6f 72 65 20 63 6f 6e 66 +rm -f core conf
3ba0: 74 65 73 74 2e 65 72 72 20 63 6f 6e 66 74 65 73 test.err conftes
3bb0: 74 2e 24 61 63 5f 6f 62 6a 65 78 74 20 5c 0a 2b t.$ac_objext \.+
3bc0: 20 20 20 20 63 6f 6e 66 74 65 73 74 24 61 63 5f conftest$ac_
3bd0: 65 78 65 65 78 74 20 63 6f 6e 66 74 65 73 74 2e exeext conftest.
3be0: 24 61 63 5f 65 78 74 0a 2b 4c 49 42 53 3d 24 61 $ac_ext.+LIBS=$a
3bf0: 63 5f 63 68 65 63 6b 5f 6c 69 62 5f 73 61 76 65 c_check_lib_save
3c00: 5f 4c 49 42 53 0a 2b 66 69 0a 2b 7b 20 24 61 73 _LIBS.+fi.+{ $as
3c10: 5f 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 7b _echo "$as_me:${
3c20: 61 73 5f 6c 69 6e 65 6e 6f 2d 24 4c 49 4e 45 4e as_lineno-$LINEN
3c30: 4f 7d 3a 20 72 65 73 75 6c 74 3a 20 24 61 63 5f O}: result: $ac_
3c40: 63 76 5f 6c 69 62 5f 72 74 5f 63 6c 6f 63 6b 5f cv_lib_rt_clock_
3c50: 67 65 74 74 69 6d 65 22 20 3e 26 35 0a 2b 24 61 gettime" >&5.+$a
3c60: 73 5f 65 63 68 6f 20 22 24 61 63 5f 63 76 5f 6c s_echo "$ac_cv_l
3c70: 69 62 5f 72 74 5f 63 6c 6f 63 6b 5f 67 65 74 74 ib_rt_clock_gett
3c80: 69 6d 65 22 20 3e 26 36 3b 20 7d 0a 2b 69 66 20 ime" >&6; }.+if
3c90: 74 65 73 74 20 22 78 24 61 63 5f 63 76 5f 6c 69 test "x$ac_cv_li
3ca0: 62 5f 72 74 5f 63 6c 6f 63 6b 5f 67 65 74 74 69 b_rt_clock_getti
3cb0: 6d 65 22 20 3d 20 78 79 65 73 3b 20 74 68 65 6e me" = xyes; then
3cc0: 20 3a 0a 2b 20 20 4c 49 42 53 3d 22 24 4c 49 42 :.+ LIBS="$LIB
3cd0: 53 20 2d 6c 72 74 22 0a 2b 66 69 0a 2b 0a 2b 20 S -lrt".+fi.+.+
3ce0: 20 20 20 66 6f 72 20 61 63 5f 66 75 6e 63 20 69 for ac_func i
3cf0: 6e 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 20 n clock_gettime
3d00: 63 6c 6f 63 6b 5f 6e 61 6e 6f 73 6c 65 65 70 0a clock_nanosleep.
3d10: 2b 64 6f 20 3a 0a 2b 20 20 61 73 5f 61 63 5f 76 +do :.+ as_ac_v
3d20: 61 72 3d 60 24 61 73 5f 65 63 68 6f 20 22 61 63 ar=`$as_echo "ac
3d30: 5f 63 76 5f 66 75 6e 63 5f 24 61 63 5f 66 75 6e _cv_func_$ac_fun
3d40: 63 22 20 7c 20 24 61 73 5f 74 72 5f 73 68 60 0a c" | $as_tr_sh`.
3d50: 2b 61 63 5f 66 6e 5f 63 5f 63 68 65 63 6b 5f 66 +ac_fn_c_check_f
3d60: 75 6e 63 20 22 24 4c 49 4e 45 4e 4f 22 20 22 24 unc "$LINENO" "$
3d70: 61 63 5f 66 75 6e 63 22 20 22 24 61 73 5f 61 63 ac_func" "$as_ac
3d80: 5f 76 61 72 22 0a 2b 69 66 20 65 76 61 6c 20 74 _var".+if eval t
3d90: 65 73 74 20 5c 22 78 5c 24 22 24 61 73 5f 61 63 est \"x\$"$as_ac
3da0: 5f 76 61 72 22 5c 22 20 3d 20 78 22 79 65 73 22 _var"\" = x"yes"
3db0: 3b 20 74 68 65 6e 20 3a 0a 2b 20 20 63 61 74 20 ; then :.+ cat
3dc0: 3e 3e 63 6f 6e 66 64 65 66 73 2e 68 20 3c 3c 5f >>confdefs.h <<_
3dd0: 41 43 45 4f 46 0a 2b 23 64 65 66 69 6e 65 20 60 ACEOF.+#define `
3de0: 24 61 73 5f 65 63 68 6f 20 22 48 41 56 45 5f 24 $as_echo "HAVE_$
3df0: 61 63 5f 66 75 6e 63 22 20 7c 20 24 61 73 5f 74 ac_func" | $as_t
3e00: 72 5f 63 70 70 60 20 31 0a 2b 5f 41 43 45 4f 46 r_cpp` 1.+_ACEOF
3e10: 0a 2b 0a 2b 66 69 0a 2b 64 6f 6e 65 0a 2b 0a 2b .+.+fi.+done.+.+
3e20: 0a 20 0a 20 23 20 41 64 64 20 74 68 65 20 74 68 . . # Add the th
3e30: 72 65 61 64 73 20 73 75 70 70 6f 72 74 20 6c 69 reads support li
3e40: 62 72 61 72 69 65 73 0a 20 4c 49 42 53 3d 22 24 braries. LIBS="$
3e50: 4c 49 42 53 24 54 48 52 45 41 44 53 5f 4c 49 42 LIBS$THREADS_LIB
3e60: 53 22 0a 64 69 66 66 20 2d 75 72 20 74 63 6c 38 S".diff -ur tcl8
3e70: 2e 36 2e 35 2d 6f 72 69 67 2f 75 6e 69 78 2f 74 .6.5-orig/unix/t
3e80: 63 6c 43 6f 6e 66 69 67 2e 68 2e 69 6e 20 74 63 clConfig.h.in tc
3e90: 6c 38 2e 36 2e 35 2f 75 6e 69 78 2f 74 63 6c 43 l8.6.5/unix/tclC
3ea0: 6f 6e 66 69 67 2e 68 2e 69 6e 0a 2d 2d 2d 20 74 onfig.h.in.--- t
3eb0: 63 6c 38 2e 36 2e 35 2d 6f 72 69 67 2f 75 6e 69 cl8.6.5-orig/uni
3ec0: 78 2f 74 63 6c 43 6f 6e 66 69 67 2e 68 2e 69 6e x/tclConfig.h.in
3ed0: 09 32 30 31 36 2d 30 32 2d 32 39 20 32 30 3a 31 .2016-02-29 20:1
3ee0: 33 3a 30 38 2e 30 30 30 30 30 30 30 30 30 20 2b 3:08.000000000 +
3ef0: 30 31 30 30 0a 2b 2b 2b 20 74 63 6c 38 2e 36 2e 0100.+++ tcl8.6.
3f00: 35 2f 75 6e 69 78 2f 74 63 6c 43 6f 6e 66 69 67 5/unix/tclConfig
3f10: 2e 68 2e 69 6e 09 32 30 31 36 2d 30 33 2d 32 35 .h.in.2016-03-25
3f20: 20 30 36 3a 34 30 3a 30 31 2e 33 30 38 37 32 34 06:40:01.308724
3f30: 31 37 39 20 2b 30 31 30 30 0a 40 40 20 2d 31 39 179 +0100.@@ -19
3f40: 2c 36 20 2b 31 39 2c 39 20 40 40 0a 20 2f 2a 20 ,6 +19,9 @@. /*
3f50: 44 65 66 69 6e 65 20 74 6f 20 31 20 69 66 20 79 Define to 1 if y
3f60: 6f 75 20 68 61 76 65 20 74 68 65 20 60 63 68 66 ou have the `chf
3f70: 6c 61 67 73 27 20 66 75 6e 63 74 69 6f 6e 2e 20 lags' function.
3f80: 2a 2f 0a 20 23 75 6e 64 65 66 20 48 41 56 45 5f */. #undef HAVE_
3f90: 43 48 46 4c 41 47 53 0a 20 0a 2b 2f 2a 20 44 65 CHFLAGS. .+/* De
3fa0: 66 69 6e 65 20 74 6f 20 31 20 69 66 20 79 6f 75 fine to 1 if you
3fb0: 20 68 61 76 65 20 74 68 65 20 60 63 6c 6f 63 6b have the `clock
3fc0: 5f 67 65 74 74 69 6d 65 27 20 66 75 6e 63 74 69 _gettime' functi
3fd0: 6f 6e 2e 20 2a 2f 0a 2b 23 75 6e 64 65 66 20 48 on. */.+#undef H
3fe0: 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d AVE_CLOCK_GETTIM
3ff0: 45 0a 2b 0a 20 2f 2a 20 44 65 66 69 6e 65 20 74 E.+. /* Define t
4000: 6f 20 31 20 69 66 20 79 6f 75 20 68 61 76 65 20 o 1 if you have
4010: 74 68 65 20 60 63 6f 70 79 66 69 6c 65 27 20 66 the `copyfile' f
4020: 75 6e 63 74 69 6f 6e 2e 20 2a 2f 0a 20 23 75 6e unction. */. #un
4030: 64 65 66 20 48 41 56 45 5f 43 4f 50 59 46 49 4c def HAVE_COPYFIL
4040: 45 0a 20 0a 40 40 20 2d 31 36 39 2c 36 20 2b 31 E. .@@ -169,6 +1
4050: 37 32 2c 39 20 40 40 0a 20 2f 2a 20 44 65 66 69 72,9 @@. /* Defi
4060: 6e 65 20 74 6f 20 31 20 69 66 20 79 6f 75 20 68 ne to 1 if you h
4070: 61 76 65 20 74 68 65 20 60 70 74 68 72 65 61 64 ave the `pthread
4080: 5f 61 74 74 72 5f 73 65 74 73 74 61 63 6b 73 69 _attr_setstacksi
4090: 7a 65 27 20 66 75 6e 63 74 69 6f 6e 2e 20 2a 2f ze' function. */
40a0: 0a 20 23 75 6e 64 65 66 20 48 41 56 45 5f 50 54 . #undef HAVE_PT
40b0: 48 52 45 41 44 5f 41 54 54 52 5f 53 45 54 53 54 HREAD_ATTR_SETST
40c0: 41 43 4b 53 49 5a 45 0a 20 0a 2b 2f 2a 20 44 65 ACKSIZE. .+/* De
40d0: 66 69 6e 65 20 74 6f 20 31 20 69 66 20 79 6f 75 fine to 1 if you
40e0: 20 68 61 76 65 20 74 68 65 20 60 70 74 68 72 65 have the `pthre
40f0: 61 64 5f 63 6f 6e 64 61 74 74 72 5f 73 65 74 63 ad_condattr_setc
4100: 6c 6f 63 6b 27 20 66 75 6e 63 74 69 6f 6e 2e 20 lock' function.
4110: 2a 2f 0a 2b 23 75 6e 64 65 66 20 48 41 56 45 5f */.+#undef HAVE_
4120: 50 54 48 52 45 41 44 5f 43 4f 4e 44 41 54 54 52 PTHREAD_CONDATTR
4130: 5f 53 45 54 43 4c 4f 43 4b 0a 2b 0a 20 2f 2a 20 _SETCLOCK.+. /*
4140: 44 6f 65 73 20 70 75 74 65 6e 76 28 29 20 63 6f Does putenv() co
4150: 70 79 20 73 74 72 69 6e 67 73 20 6f 72 20 69 6e py strings or in
4160: 63 6f 72 70 6f 72 61 74 65 20 74 68 65 6d 20 62 corporate them b
4170: 79 20 72 65 66 65 72 65 6e 63 65 3f 20 2a 2f 0a y reference? */.
4180: 20 23 75 6e 64 65 66 20 48 41 56 45 5f 50 55 54 #undef HAVE_PUT
4190: 45 4e 56 5f 54 48 41 54 5f 43 4f 50 49 45 53 0a ENV_THAT_COPIES.
41a0: 20 0a 64 69 66 66 20 2d 75 72 20 74 63 6c 38 2e .diff -ur tcl8.
41b0: 36 2e 35 2d 6f 72 69 67 2f 75 6e 69 78 2f 74 63 6.5-orig/unix/tc
41c0: 6c 2e 6d 34 20 74 63 6c 38 2e 36 2e 35 2f 75 6e l.m4 tcl8.6.5/un
41d0: 69 78 2f 74 63 6c 2e 6d 34 0a 2d 2d 2d 20 74 63 ix/tcl.m4.--- tc
41e0: 6c 38 2e 36 2e 35 2d 6f 72 69 67 2f 75 6e 69 78 l8.6.5-orig/unix
41f0: 2f 74 63 6c 2e 6d 34 09 32 30 31 36 2d 30 32 2d /tcl.m4.2016-02-
4200: 32 39 20 32 30 3a 31 33 3a 30 38 2e 30 30 30 30 29 20:13:08.0000
4210: 30 30 30 30 30 20 2b 30 31 30 30 0a 2b 2b 2b 20 00000 +0100.+++
4220: 74 63 6c 38 2e 36 2e 35 2f 75 6e 69 78 2f 74 63 tcl8.6.5/unix/tc
4230: 6c 2e 6d 34 09 32 30 31 36 2d 30 33 2d 32 35 20 l.m4.2016-03-25
4240: 30 36 3a 33 36 3a 31 35 2e 31 37 36 36 37 32 37 06:36:15.1766727
4250: 36 31 20 2b 30 31 30 30 0a 40 40 20 2d 36 37 38 61 +0100.@@ -678
4260: 2c 37 20 2b 36 37 38 2c 37 20 40 40 0a 20 0a 20 ,7 +678,7 @@. .
4270: 09 61 63 5f 73 61 76 65 64 5f 6c 69 62 73 3d 24 .ac_saved_libs=$
4280: 4c 49 42 53 0a 20 09 4c 49 42 53 3d 22 24 4c 49 LIBS. .LIBS="$LI
4290: 42 53 20 24 54 48 52 45 41 44 53 5f 4c 49 42 53 BS $THREADS_LIBS
42a0: 22 0a 2d 09 41 43 5f 43 48 45 43 4b 5f 46 55 4e ".-.AC_CHECK_FUN
42b0: 43 53 28 70 74 68 72 65 61 64 5f 61 74 74 72 5f CS(pthread_attr_
42c0: 73 65 74 73 74 61 63 6b 73 69 7a 65 20 70 74 68 setstacksize pth
42d0: 72 65 61 64 5f 61 74 66 6f 72 6b 29 0a 2b 09 41 read_atfork).+.A
42e0: 43 5f 43 48 45 43 4b 5f 46 55 4e 43 53 28 70 74 C_CHECK_FUNCS(pt
42f0: 68 72 65 61 64 5f 61 74 74 72 5f 73 65 74 73 74 hread_attr_setst
4300: 61 63 6b 73 69 7a 65 20 70 74 68 72 65 61 64 5f acksize pthread_
4310: 61 74 66 6f 72 6b 20 70 74 68 72 65 61 64 5f 63 atfork pthread_c
4320: 6f 6e 64 61 74 74 72 5f 73 65 74 63 6c 6f 63 6b ondattr_setclock
4330: 29 0a 20 09 4c 49 42 53 3d 24 61 63 5f 73 61 76 ). .LIBS=$ac_sav
4340: 65 64 5f 6c 69 62 73 0a 20 20 20 20 20 65 6c 73 ed_libs. els
4350: 65 0a 20 09 54 43 4c 5f 54 48 52 45 41 44 53 3d e. .TCL_THREADS=
4360: 30 0a 40 40 20 2d 32 35 33 39 2c 36 20 2b 32 35 0.@@ -2539,6 +25
4370: 33 39 2c 39 20 40 40 0a 20 20 20 20 20 66 69 0a 39,9 @@. fi.
4380: 20 20 20 20 20 41 43 5f 43 48 45 43 4b 5f 46 55 AC_CHECK_FU
4390: 4e 43 28 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 NC(gethostbyname
43a0: 2c 20 2c 20 5b 41 43 5f 43 48 45 43 4b 5f 4c 49 , , [AC_CHECK_LI
43b0: 42 28 6e 73 6c 2c 20 67 65 74 68 6f 73 74 62 79 B(nsl, gethostby
43c0: 6e 61 6d 65 2c 0a 20 09 20 20 20 20 5b 4c 49 42 name,. . [LIB
43d0: 53 3d 22 24 4c 49 42 53 20 2d 6c 6e 73 6c 22 5d S="$LIBS -lnsl"]
43e0: 29 5d 29 0a 2b 0a 2b 20 20 20 20 41 43 5f 43 48 )]).+.+ AC_CH
43f0: 45 43 4b 5f 4c 49 42 28 72 74 2c 20 63 6c 6f 63 ECK_LIB(rt, cloc
4400: 6b 5f 67 65 74 74 69 6d 65 2c 20 5b 4c 49 42 53 k_gettime, [LIBS
4410: 3d 22 24 4c 49 42 53 20 2d 6c 72 74 22 5d 29 0a ="$LIBS -lrt"]).
4420: 2b 20 20 20 20 41 43 5f 43 48 45 43 4b 5f 46 55 + AC_CHECK_FU
4430: 4e 43 53 28 63 6c 6f 63 6b 5f 67 65 74 74 69 6d NCS(clock_gettim
4440: 65 20 63 6c 6f 63 6b 5f 6e 61 6e 6f 73 6c 65 65 e clock_nanoslee
4450: 70 29 0a 20 5d 29 0a 20 0a 20 23 2d 2d 2d 2d 2d p). ]). . #-----
4460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
44a0: 64 69 66 66 20 2d 75 72 20 74 63 6c 38 2e 36 2e diff -ur tcl8.6.
44b0: 35 2d 6f 72 69 67 2f 75 6e 69 78 2f 74 63 6c 55 5-orig/unix/tclU
44c0: 6e 69 78 43 68 61 6e 2e 63 20 74 63 6c 38 2e 36 nixChan.c tcl8.6
44d0: 2e 35 2f 75 6e 69 78 2f 74 63 6c 55 6e 69 78 43 .5/unix/tclUnixC
44e0: 68 61 6e 2e 63 0a 2d 2d 2d 20 74 63 6c 38 2e 36 han.c.--- tcl8.6
44f0: 2e 35 2d 6f 72 69 67 2f 75 6e 69 78 2f 74 63 6c .5-orig/unix/tcl
4500: 55 6e 69 78 43 68 61 6e 2e 63 09 32 30 31 36 2d UnixChan.c.2016-
4510: 30 32 2d 32 35 20 32 31 3a 31 32 3a 33 38 2e 30 02-25 21:12:38.0
4520: 30 30 30 30 30 30 30 30 20 2b 30 31 30 30 0a 2b 00000000 +0100.+
4530: 2b 2b 20 74 63 6c 38 2e 36 2e 35 2f 75 6e 69 78 ++ tcl8.6.5/unix
4540: 2f 74 63 6c 55 6e 69 78 43 68 61 6e 2e 63 09 32 /tclUnixChan.c.2
4550: 30 31 36 2d 30 33 2d 32 35 20 30 36 3a 35 37 3a 016-03-25 06:57:
4560: 34 34 2e 30 30 30 30 30 30 30 30 30 20 2b 30 31 44.000000000 +01
4570: 30 30 0a 40 40 20 2d 31 37 36 33 2c 31 32 20 2b 00.@@ -1763,12 +
4580: 31 37 36 33 2c 31 36 20 40 40 0a 20 09 09 09 09 1763,16 @@. ....
4590: 20 2a 20 61 74 20 61 6c 6c 2c 20 61 6e 64 20 61 * at all, and a
45a0: 20 76 61 6c 75 65 20 6f 66 20 2d 31 20 6d 65 61 value of -1 mea
45b0: 6e 73 20 77 61 69 74 0a 20 09 09 09 09 20 2a 20 ns wait. .... *
45c0: 66 6f 72 65 76 65 72 2e 20 2a 2f 0a 20 7b 0a 2d forever. */. {.-
45d0: 20 20 20 20 54 63 6c 5f 54 69 6d 65 20 61 62 6f Tcl_Time abo
45e0: 72 74 54 69 6d 65 20 3d 20 7b 30 2c 20 30 7d 2c rtTime = {0, 0},
45f0: 20 6e 6f 77 3b 20 2f 2a 20 73 69 6c 65 6e 63 65 now; /* silence
4600: 20 67 63 63 20 34 20 77 61 72 6e 69 6e 67 20 2a gcc 4 warning *
4610: 2f 0a 2b 20 20 20 20 54 63 6c 5f 54 69 6d 65 20 /.+ Tcl_Time
4620: 61 62 6f 72 74 54 69 6d 65 20 3d 20 7b 30 2c 20 abortTime = {0,
4630: 30 7d 2c 20 6e 6f 77 20 3d 20 7b 20 30 2c 20 30 0}, now = { 0, 0
4640: 20 7d 3b 20 2f 2a 20 73 69 6c 65 6e 63 65 20 67 }; /* silence g
4650: 63 63 20 34 20 77 61 72 6e 69 6e 67 20 2a 2f 0a cc 4 warning */.
4660: 20 20 20 20 20 73 74 72 75 63 74 20 74 69 6d 65 struct time
4670: 76 61 6c 20 62 6c 6f 63 6b 54 69 6d 65 2c 20 2a val blockTime, *
4680: 74 69 6d 65 6f 75 74 50 74 72 3b 0a 20 20 20 20 timeoutPtr;.
4690: 20 69 6e 74 20 6e 75 6d 46 6f 75 6e 64 2c 20 72 int numFound, r
46a0: 65 73 75 6c 74 20 3d 20 30 3b 0a 20 20 20 20 20 esult = 0;.
46b0: 66 64 5f 73 65 74 20 72 65 61 64 61 62 6c 65 4d fd_set readableM
46c0: 61 73 6b 3b 0a 20 20 20 20 20 66 64 5f 73 65 74 ask;. fd_set
46d0: 20 77 72 69 74 61 62 6c 65 4d 61 73 6b 3b 0a 20 writableMask;.
46e0: 20 20 20 20 66 64 5f 73 65 74 20 65 78 63 65 70 fd_set excep
46f0: 74 69 6f 6e 4d 61 73 6b 3b 0a 2b 23 69 66 64 65 tionMask;.+#ifde
4700: 66 20 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 f HAVE_CLOCK_GET
4710: 54 49 4d 45 0a 2b 20 20 20 20 69 6e 74 20 6d 6f TIME.+ int mo
4720: 6e 6f 43 6c 6f 63 6b 20 3d 20 31 3b 0a 2b 20 20 noClock = 1;.+
4730: 20 20 73 74 72 75 63 74 20 74 69 6d 65 73 70 65 struct timespe
4740: 63 20 74 73 3b 0a 2b 23 65 6e 64 69 66 0a 20 0a c ts;.+#endif. .
4750: 20 23 69 66 6e 64 65 66 20 5f 44 41 52 57 49 4e #ifndef _DARWIN
4760: 5f 43 5f 53 4f 55 52 43 45 0a 20 20 20 20 20 2f _C_SOURCE. /
4770: 2a 0a 40 40 20 2d 31 37 38 37 2c 37 20 2b 31 37 *.@@ -1787,7 +17
4780: 39 31 2c 31 36 20 40 40 0a 20 20 20 20 20 20 2a 91,16 @@. *
4790: 2f 0a 20 0a 20 20 20 20 20 69 66 20 28 74 69 6d /. . if (tim
47a0: 65 6f 75 74 20 3e 20 30 29 20 7b 0a 2b 23 69 66 eout > 0) {.+#if
47b0: 64 65 66 20 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 def HAVE_CLOCK_G
47c0: 45 54 54 49 4d 45 0a 2b 09 69 66 20 28 63 6c 6f ETTIME.+.if (clo
47d0: 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b ck_gettime(CLOCK
47e0: 5f 4d 4f 4e 4f 54 4f 4e 49 43 2c 20 26 74 73 29 _MONOTONIC, &ts)
47f0: 20 3d 3d 20 2d 31 29 20 7b 0a 2b 09 20 20 20 20 == -1) {.+.
4800: 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c clock_gettime(CL
4810: 4f 43 4b 5f 52 45 41 4c 54 49 4d 45 2c 20 26 74 OCK_REALTIME, &t
4820: 73 29 3b 0a 2b 09 20 20 20 20 6d 6f 6e 6f 43 6c s);.+. monoCl
4830: 6f 63 6b 20 3d 20 30 3b 0a 2b 09 7d 0a 2b 09 6e ock = 0;.+.}.+.n
4840: 6f 77 2e 73 65 63 20 3d 20 74 73 2e 74 76 5f 73 ow.sec = ts.tv_s
4850: 65 63 3b 0a 2b 09 6e 6f 77 2e 75 73 65 63 20 3d ec;.+.now.usec =
4860: 20 74 73 2e 74 76 5f 6e 73 65 63 20 2f 20 31 30 ts.tv_nsec / 10
4870: 30 30 3b 0a 2b 23 65 6c 73 65 0a 20 09 54 63 6c 00;.+#else. .Tcl
4880: 5f 47 65 74 54 69 6d 65 28 26 6e 6f 77 29 3b 0a _GetTime(&now);.
4890: 2b 23 65 6e 64 69 66 0a 20 09 61 62 6f 72 74 54 +#endif. .abortT
48a0: 69 6d 65 2e 73 65 63 20 3d 20 6e 6f 77 2e 73 65 ime.sec = now.se
48b0: 63 20 2b 20 74 69 6d 65 6f 75 74 2f 31 30 30 30 c + timeout/1000
48c0: 3b 0a 20 09 61 62 6f 72 74 54 69 6d 65 2e 75 73 ;. .abortTime.us
48d0: 65 63 20 3d 20 6e 6f 77 2e 75 73 65 63 20 2b 20 ec = now.usec +
48e0: 28 74 69 6d 65 6f 75 74 25 31 30 30 30 29 2a 31 (timeout%1000)*1
48f0: 30 30 30 3b 0a 20 09 69 66 20 28 61 62 6f 72 74 000;. .if (abort
4900: 54 69 6d 65 2e 75 73 65 63 20 3e 3d 20 31 30 30 Time.usec >= 100
4910: 30 30 30 30 29 20 7b 0a 40 40 20 2d 31 38 37 36 0000) {.@@ -1876
4920: 2c 37 20 2b 31 38 38 39 2c 31 33 20 40 40 0a 20 ,7 +1889,13 @@.
4930: 09 20 2a 20 54 68 65 20 73 65 6c 65 63 74 20 72 . * The select r
4940: 65 74 75 72 6e 65 64 20 65 61 72 6c 79 2c 20 73 eturned early, s
4950: 6f 20 77 65 20 6e 65 65 64 20 74 6f 20 72 65 63 o we need to rec
4960: 6f 6d 70 75 74 65 20 74 68 65 20 74 69 6d 65 6f ompute the timeo
4970: 75 74 2e 0a 20 09 20 2a 2f 0a 20 0a 2b 23 69 66 ut.. . */. .+#if
4980: 64 65 66 20 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 def HAVE_CLOCK_G
4990: 45 54 54 49 4d 45 0a 2b 09 63 6c 6f 63 6b 5f 67 ETTIME.+.clock_g
49a0: 65 74 74 69 6d 65 28 6d 6f 6e 6f 43 6c 6f 63 6b ettime(monoClock
49b0: 20 3f 20 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e ? CLOCK_MONOTON
49c0: 49 43 20 3a 20 43 4c 4f 43 4b 5f 52 45 41 4c 54 IC : CLOCK_REALT
49d0: 49 4d 45 2c 20 26 74 73 29 3b 0a 2b 09 6e 6f 77 IME, &ts);.+.now
49e0: 2e 73 65 63 20 3d 20 74 73 2e 74 76 5f 73 65 63 .sec = ts.tv_sec
49f0: 3b 0a 2b 09 6e 6f 77 2e 75 73 65 63 20 3d 20 74 ;.+.now.usec = t
4a00: 73 2e 74 76 5f 6e 73 65 63 20 2f 20 31 30 30 30 s.tv_nsec / 1000
4a10: 3b 0a 2b 23 65 6c 73 65 0a 20 09 54 63 6c 5f 47 ;.+#else. .Tcl_G
4a20: 65 74 54 69 6d 65 28 26 6e 6f 77 29 3b 0a 2b 23 etTime(&now);.+#
4a30: 65 6e 64 69 66 0a 20 09 69 66 20 28 28 61 62 6f endif. .if ((abo
4a40: 72 74 54 69 6d 65 2e 73 65 63 20 3c 20 6e 6f 77 rtTime.sec < now
4a50: 2e 73 65 63 29 0a 20 09 09 7c 7c 20 28 61 62 6f .sec). ..|| (abo
4a60: 72 74 54 69 6d 65 2e 73 65 63 3d 3d 6e 6f 77 2e rtTime.sec==now.
4a70: 73 65 63 20 26 26 20 61 62 6f 72 74 54 69 6d 65 sec && abortTime
4a80: 2e 75 73 65 63 3c 3d 6e 6f 77 2e 75 73 65 63 29 .usec<=now.usec)
4a90: 29 20 7b 0a 20 09 20 20 20 20 62 72 65 61 6b 3b ) {. . break;
4aa0: 0a 64 69 66 66 20 2d 75 72 20 74 63 6c 38 2e 36 .diff -ur tcl8.6
4ab0: 2e 35 2d 6f 72 69 67 2f 75 6e 69 78 2f 74 63 6c .5-orig/unix/tcl
4ac0: 55 6e 69 78 45 76 65 6e 74 2e 63 20 74 63 6c 38 UnixEvent.c tcl8
4ad0: 2e 36 2e 35 2f 75 6e 69 78 2f 74 63 6c 55 6e 69 .6.5/unix/tclUni
4ae0: 78 45 76 65 6e 74 2e 63 0a 2d 2d 2d 20 74 63 6c xEvent.c.--- tcl
4af0: 38 2e 36 2e 35 2d 6f 72 69 67 2f 75 6e 69 78 2f 8.6.5-orig/unix/
4b00: 74 63 6c 55 6e 69 78 45 76 65 6e 74 2e 63 09 32 tclUnixEvent.c.2
4b10: 30 31 36 2d 30 32 2d 32 35 20 32 30 3a 33 31 3a 016-02-25 20:31:
4b20: 32 30 2e 30 30 30 30 30 30 30 30 30 20 2b 30 31 20.000000000 +01
4b30: 30 30 0a 2b 2b 2b 20 74 63 6c 38 2e 36 2e 35 2f 00.+++ tcl8.6.5/
4b40: 75 6e 69 78 2f 74 63 6c 55 6e 69 78 45 76 65 6e unix/tclUnixEven
4b50: 74 2e 63 09 32 30 31 36 2d 30 33 2d 32 35 20 30 t.c.2016-03-25 0
4b60: 36 3a 35 38 3a 32 34 2e 30 30 30 30 30 30 30 30 6:58:24.00000000
4b70: 30 20 2b 30 31 30 30 0a 40 40 20 2d 34 32 2c 37 0 +0100.@@ -42,7
4b80: 20 2b 34 32 2c 31 39 20 40 40 0a 20 20 20 20 20 +42,19 @@.
4b90: 20 2a 20 74 69 6d 65 20 72 65 61 6c 6c 79 20 68 * time really h
4ba0: 61 73 20 65 6c 61 70 73 65 64 2e 20 20 49 66 20 as elapsed. If
4bb0: 69 74 27 73 20 74 6f 6f 20 65 61 72 6c 79 2c 20 it's too early,
4bc0: 67 6f 20 62 61 63 6b 20 74 6f 20 73 6c 65 65 70 go back to sleep
4bd0: 20 61 67 61 69 6e 2e 0a 20 20 20 20 20 20 2a 2f again.. */
4be0: 0a 20 0a 2b 23 69 66 64 65 66 20 48 41 56 45 5f . .+#ifdef HAVE_
4bf0: 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 0a 2b 20 CLOCK_GETTIME.+
4c00: 20 20 20 69 6e 74 20 6d 6f 6e 6f 43 6c 6f 63 6b int monoClock
4c10: 20 3d 20 31 3b 0a 2b 20 20 20 20 73 74 72 75 63 = 1;.+ struc
4c20: 74 20 74 69 6d 65 73 70 65 63 20 74 73 3b 0a 2b t timespec ts;.+
4c30: 0a 2b 20 20 20 20 69 66 20 28 63 6c 6f 63 6b 5f .+ if (clock_
4c40: 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f gettime(CLOCK_MO
4c50: 4e 4f 54 4f 4e 49 43 2c 20 26 74 73 29 20 3d 3d NOTONIC, &ts) ==
4c60: 20 2d 31 29 20 7b 0a 2b 09 63 6c 6f 63 6b 5f 67 -1) {.+.clock_g
4c70: 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 52 45 41 ettime(CLOCK_REA
4c80: 4c 54 49 4d 45 2c 20 26 74 73 29 3b 0a 2b 09 6d LTIME, &ts);.+.m
4c90: 6f 6e 6f 43 6c 6f 63 6b 20 3d 20 30 3b 0a 2b 20 onoClock = 0;.+
4ca0: 20 20 20 7d 0a 2b 20 20 20 20 62 65 66 6f 72 65 }.+ before
4cb0: 2e 73 65 63 20 3d 20 74 73 2e 74 76 5f 73 65 63 .sec = ts.tv_sec
4cc0: 3b 0a 2b 20 20 20 20 62 65 66 6f 72 65 2e 75 73 ;.+ before.us
4cd0: 65 63 20 3d 20 74 73 2e 74 76 5f 6e 73 65 63 20 ec = ts.tv_nsec
4ce0: 2f 20 31 30 30 30 3b 0a 2b 23 65 6c 73 65 0a 20 / 1000;.+#else.
4cf0: 20 20 20 20 54 63 6c 5f 47 65 74 54 69 6d 65 28 Tcl_GetTime(
4d00: 26 62 65 66 6f 72 65 29 3b 0a 2b 23 65 6e 64 69 &before);.+#endi
4d10: 66 0a 20 20 20 20 20 61 66 74 65 72 20 3d 20 62 f. after = b
4d20: 65 66 6f 72 65 3b 0a 20 20 20 20 20 61 66 74 65 efore;. afte
4d30: 72 2e 73 65 63 20 2b 3d 20 6d 73 2f 31 30 30 30 r.sec += ms/1000
4d40: 3b 0a 20 20 20 20 20 61 66 74 65 72 2e 75 73 65 ;. after.use
4d50: 63 20 2b 3d 20 28 6d 73 25 31 30 30 30 29 2a 31 c += (ms%1000)*1
4d60: 30 30 30 3b 0a 40 40 20 2d 38 31 2c 37 20 2b 39 000;.@@ -81,7 +9
4d70: 33 2c 31 33 20 40 40 0a 20 09 7d 0a 20 09 28 76 3,13 @@. .}. .(v
4d80: 6f 69 64 29 20 73 65 6c 65 63 74 28 30 2c 20 28 oid) select(0, (
4d90: 53 45 4c 45 43 54 5f 4d 41 53 4b 20 2a 29 20 30 SELECT_MASK *) 0
4da0: 2c 20 28 53 45 4c 45 43 54 5f 4d 41 53 4b 20 2a , (SELECT_MASK *
4db0: 29 20 30 2c 0a 20 09 09 28 53 45 4c 45 43 54 5f ) 0,. ..(SELECT_
4dc0: 4d 41 53 4b 20 2a 29 20 30 2c 20 26 64 65 6c 61 MASK *) 0, &dela
4dd0: 79 29 3b 0a 2b 23 69 66 64 65 66 20 48 41 56 45 y);.+#ifdef HAVE
4de0: 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 0a 2b _CLOCK_GETTIME.+
4df0: 09 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 6d .clock_gettime(m
4e00: 6f 6e 6f 43 6c 6f 63 6b 20 3f 20 43 4c 4f 43 4b onoClock ? CLOCK
4e10: 5f 4d 4f 4e 4f 54 4f 4e 49 43 20 3a 20 43 4c 4f _MONOTONIC : CLO
4e20: 43 4b 5f 52 45 41 4c 54 49 4d 45 2c 20 26 74 73 CK_REALTIME, &ts
4e30: 29 3b 0a 2b 09 62 65 66 6f 72 65 2e 73 65 63 20 );.+.before.sec
4e40: 3d 20 74 73 2e 74 76 5f 73 65 63 3b 0a 2b 09 62 = ts.tv_sec;.+.b
4e50: 65 66 6f 72 65 2e 75 73 65 63 20 3d 20 74 73 2e efore.usec = ts.
4e60: 74 76 5f 6e 73 65 63 20 2f 20 31 30 30 30 3b 0a tv_nsec / 1000;.
4e70: 2b 23 65 6c 73 65 0a 20 09 54 63 6c 5f 47 65 74 +#else. .Tcl_Get
4e80: 54 69 6d 65 28 26 62 65 66 6f 72 65 29 3b 0a 2b Time(&before);.+
4e90: 23 65 6e 64 69 66 0a 20 20 20 20 20 7d 0a 20 7d #endif. }. }
4ea0: 0a 20 0c 0a 64 69 66 66 20 2d 75 72 20 74 63 6c . ..diff -ur tcl
4eb0: 38 2e 36 2e 35 2d 6f 72 69 67 2f 75 6e 69 78 2f 8.6.5-orig/unix/
4ec0: 74 63 6c 55 6e 69 78 4e 6f 74 66 79 2e 63 20 74 tclUnixNotfy.c t
4ed0: 63 6c 38 2e 36 2e 35 2f 75 6e 69 78 2f 74 63 6c cl8.6.5/unix/tcl
4ee0: 55 6e 69 78 4e 6f 74 66 79 2e 63 0a 2d 2d 2d 20 UnixNotfy.c.---
4ef0: 74 63 6c 38 2e 36 2e 35 2d 6f 72 69 67 2f 75 6e tcl8.6.5-orig/un
4f00: 69 78 2f 74 63 6c 55 6e 69 78 4e 6f 74 66 79 2e ix/tclUnixNotfy.
4f10: 63 09 32 30 31 36 2d 30 32 2d 32 35 20 32 31 3a c.2016-02-25 21:
4f20: 31 32 3a 33 38 2e 30 30 30 30 30 30 30 30 30 20 12:38.000000000
4f30: 2b 30 31 30 30 0a 2b 2b 2b 20 74 63 6c 38 2e 36 +0100.+++ tcl8.6
4f40: 2e 35 2f 75 6e 69 78 2f 74 63 6c 55 6e 69 78 4e .5/unix/tclUnixN
4f50: 6f 74 66 79 2e 63 09 32 30 31 36 2d 30 33 2d 32 otfy.c.2016-03-2
4f60: 35 20 30 36 3a 34 33 3a 30 39 2e 34 33 37 39 31 5 06:43:09.43791
4f70: 38 32 32 38 20 2b 30 31 30 30 0a 40 40 20 2d 31 8228 +0100.@@ -1
4f80: 30 32 2c 36 20 2b 31 30 32 2c 39 20 40 40 0a 20 02,6 +102,9 @@.
4f90: 20 20 20 20 70 74 68 72 65 61 64 5f 63 6f 6e 64 pthread_cond
4fa0: 5f 74 20 77 61 69 74 43 56 3b 09 2f 2a 20 41 6e _t waitCV;./* An
4fb0: 79 20 6f 74 68 65 72 20 74 68 72 65 61 64 20 61 y other thread a
4fc0: 6c 65 72 74 73 20 61 20 6e 6f 74 69 66 69 65 72 lerts a notifier
4fd0: 20 74 68 61 74 20 61 6e 0a 20 09 09 09 09 20 2a that an. .... *
4fe0: 20 65 76 65 6e 74 20 69 73 20 72 65 61 64 79 20 event is ready
4ff0: 74 6f 20 62 65 20 70 72 6f 63 65 73 73 65 64 20 to be processed
5000: 62 79 20 73 69 67 6e 61 6c 69 6e 67 0a 20 09 09 by signaling. ..
5010: 09 09 20 2a 20 74 68 69 73 20 63 6f 6e 64 69 74 .. * this condit
5020: 69 6f 6e 20 76 61 72 69 61 62 6c 65 2e 20 2a 2f ion variable. */
5030: 0a 2b 23 69 66 20 64 65 66 69 6e 65 64 28 48 41 .+#if defined(HA
5040: 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 VE_CLOCK_GETTIME
5050: 29 20 26 26 20 64 65 66 69 6e 65 64 28 48 41 56 ) && defined(HAV
5060: 45 5f 50 54 48 52 45 41 44 5f 43 4f 4e 44 41 54 E_PTHREAD_CONDAT
5070: 54 52 5f 53 45 54 43 4c 4f 43 4b 29 0a 2b 20 20 TR_SETCLOCK).+
5080: 20 20 69 6e 74 20 6d 6f 6e 6f 43 6c 6f 63 6b 3b int monoClock;
5090: 09 09 2f 2a 20 57 68 65 6e 20 74 72 75 65 20 75 ../* When true u
50a0: 73 65 20 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e se CLOCK_MONOTON
50b0: 49 43 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a 20 23 IC */.+#endif. #
50c0: 65 6e 64 69 66 20 2f 2a 20 5f 5f 43 59 47 57 49 endif /* __CYGWI
50d0: 4e 5f 5f 20 2a 2f 0a 20 20 20 20 20 69 6e 74 20 N__ */. int
50e0: 77 61 69 74 43 56 69 6e 69 74 69 61 6c 69 7a 65 waitCVinitialize
50f0: 64 3b 09 2f 2a 20 56 61 72 69 61 62 6c 65 20 74 d;./* Variable t
5100: 6f 20 66 6c 61 67 20 69 6e 69 74 69 61 6c 69 7a o flag initializ
5110: 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 74 72 ation of the str
5120: 75 63 74 75 72 65 20 2a 2f 0a 20 20 20 20 20 69 ucture */. i
5130: 6e 74 20 65 76 65 6e 74 52 65 61 64 79 3b 09 09 nt eventReady;..
5140: 2f 2a 20 54 72 75 65 20 69 66 20 61 6e 20 65 76 /* True if an ev
5150: 65 6e 74 20 69 73 20 72 65 61 64 79 20 74 6f 20 ent is ready to
5160: 62 65 20 70 72 6f 63 65 73 73 65 64 2e 0a 40 40 be processed..@@
5170: 20 2d 33 35 37 2c 37 20 2b 33 36 30 2c 32 34 20 -357,7 +360,24
5180: 40 40 0a 20 09 20 20 20 20 74 73 64 50 74 72 2d @@. . tsdPtr-
5190: 3e 65 76 65 6e 74 20 3d 20 43 72 65 61 74 65 45 >event = CreateE
51a0: 76 65 6e 74 57 28 4e 55 4c 4c 2c 20 31 20 2f 2a ventW(NULL, 1 /*
51b0: 20 6d 61 6e 75 61 6c 20 2a 2f 2c 0a 20 09 09 20 manual */,. ..
51c0: 20 20 20 30 20 2f 2a 20 21 73 69 67 6e 61 6c 65 0 /* !signale
51d0: 64 20 2a 2f 2c 20 4e 55 4c 4c 29 3b 0a 20 23 65 d */, NULL);. #e
51e0: 6c 73 65 0a 2b 23 69 66 20 64 65 66 69 6e 65 64 lse.+#if defined
51f0: 28 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 (HAVE_CLOCK_GETT
5200: 49 4d 45 29 20 26 26 20 64 65 66 69 6e 65 64 28 IME) && defined(
5210: 48 41 56 45 5f 50 54 48 52 45 41 44 5f 43 4f 4e HAVE_PTHREAD_CON
5220: 44 41 54 54 52 5f 53 45 54 43 4c 4f 43 4b 29 0a DATTR_SETCLOCK).
5230: 2b 09 20 20 20 20 70 74 68 72 65 61 64 5f 63 6f +. pthread_co
5240: 6e 64 61 74 74 72 5f 74 20 61 74 74 72 3b 0a 2b ndattr_t attr;.+
5250: 0a 2b 09 20 20 20 20 70 74 68 72 65 61 64 5f 63 .+. pthread_c
5260: 6f 6e 64 61 74 74 72 5f 69 6e 69 74 28 26 61 74 ondattr_init(&at
5270: 74 72 29 3b 0a 2b 09 20 20 20 20 74 73 64 50 74 tr);.+. tsdPt
5280: 72 2d 3e 6d 6f 6e 6f 43 6c 6f 63 6b 20 3d 0a 2b r->monoClock =.+
5290: 09 09 20 20 20 20 70 74 68 72 65 61 64 5f 63 6f .. pthread_co
52a0: 6e 64 61 74 74 72 5f 73 65 74 63 6c 6f 63 6b 28 ndattr_setclock(
52b0: 26 61 74 74 72 2c 20 43 4c 4f 43 4b 5f 4d 4f 4e &attr, CLOCK_MON
52c0: 4f 54 4f 4e 49 43 29 20 3d 3d 20 30 3b 0a 2b 09 OTONIC) == 0;.+.
52d0: 20 20 20 20 69 66 20 28 74 73 64 50 74 72 2d 3e if (tsdPtr->
52e0: 6d 6f 6e 6f 43 6c 6f 63 6b 29 20 7b 0a 2b 09 09 monoClock) {.+..
52f0: 69 66 20 28 70 74 68 72 65 61 64 5f 63 6f 6e 64 if (pthread_cond
5300: 5f 69 6e 69 74 28 26 74 73 64 50 74 72 2d 3e 77 _init(&tsdPtr->w
5310: 61 69 74 43 56 2c 20 26 61 74 74 72 29 29 20 7b aitCV, &attr)) {
5320: 0a 2b 09 09 20 20 20 20 74 73 64 50 74 72 2d 3e .+.. tsdPtr->
5330: 6d 6f 6e 6f 43 6c 6f 63 6b 20 3d 20 30 3b 0a 2b monoClock = 0;.+
5340: 09 09 20 20 20 20 70 74 68 72 65 61 64 5f 63 6f .. pthread_co
5350: 6e 64 5f 69 6e 69 74 28 26 74 73 64 50 74 72 2d nd_init(&tsdPtr-
5360: 3e 77 61 69 74 43 56 2c 20 4e 55 4c 4c 29 3b 0a >waitCV, NULL);.
5370: 2b 09 09 7d 0a 2b 09 20 20 20 20 7d 20 65 6c 73 +..}.+. } els
5380: 65 20 7b 0a 2b 09 09 70 74 68 72 65 61 64 5f 63 e {.+..pthread_c
5390: 6f 6e 64 5f 69 6e 69 74 28 26 74 73 64 50 74 72 ond_init(&tsdPtr
53a0: 2d 3e 77 61 69 74 43 56 2c 20 4e 55 4c 4c 29 3b ->waitCV, NULL);
53b0: 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 70 .+. }.+. p
53c0: 74 68 72 65 61 64 5f 63 6f 6e 64 61 74 74 72 5f thread_condattr_
53d0: 64 65 73 74 72 6f 79 28 26 61 74 74 72 29 3b 0a destroy(&attr);.
53e0: 2b 23 65 6c 73 65 0a 20 09 20 20 20 20 70 74 68 +#else. . pth
53f0: 72 65 61 64 5f 63 6f 6e 64 5f 69 6e 69 74 28 26 read_cond_init(&
5400: 74 73 64 50 74 72 2d 3e 77 61 69 74 43 56 2c 20 tsdPtr->waitCV,
5410: 4e 55 4c 4c 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 NULL);.+#endif.
5420: 23 65 6e 64 69 66 20 2f 2a 20 5f 5f 43 59 47 57 #endif /* __CYGW
5430: 49 4e 5f 5f 20 2a 2f 0a 20 09 20 20 20 20 74 73 IN__ */. . ts
5440: 64 50 74 72 2d 3e 77 61 69 74 43 56 69 6e 69 74 dPtr->waitCVinit
5450: 69 61 6c 69 7a 65 64 20 3d 20 31 3b 0a 20 09 7d ialized = 1;. .}
5460: 0a 40 40 20 2d 39 39 37 2c 31 36 20 2b 31 30 31 .@@ -997,16 +101
5470: 37 2c 32 39 20 40 40 0a 20 09 20 20 20 20 7d 0a 7,29 @@. . }.
5480: 20 23 65 6c 73 65 0a 20 09 20 20 20 20 69 66 20 #else. . if
5490: 28 74 69 6d 65 50 74 72 20 21 3d 20 4e 55 4c 4c (timePtr != NULL
54a0: 29 20 7b 0a 2d 09 20 20 20 20 20 20 20 54 63 6c ) {.-. Tcl
54b0: 5f 54 69 6d 65 20 6e 6f 77 3b 0a 2d 09 20 20 20 _Time now;.-.
54c0: 20 20 20 20 73 74 72 75 63 74 20 74 69 6d 65 73 struct times
54d0: 70 65 63 20 70 74 69 6d 65 3b 0a 2b 09 09 73 74 pec ptime;.+..st
54e0: 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 70 74 ruct timespec pt
54f0: 69 6d 65 3b 0a 20 0a 2d 09 20 20 20 20 20 20 20 ime;. .-.
5500: 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 6e 6f 77 Tcl_GetTime(&now
5510: 29 3b 0a 2d 09 20 20 20 20 20 20 20 70 74 69 6d );.-. ptim
5520: 65 2e 74 76 5f 73 65 63 20 3d 20 74 69 6d 65 50 e.tv_sec = timeP
5530: 74 72 2d 3e 73 65 63 20 2b 20 6e 6f 77 2e 73 65 tr->sec + now.se
5540: 63 20 2b 20 28 74 69 6d 65 50 74 72 2d 3e 75 73 c + (timePtr->us
5550: 65 63 20 2b 20 6e 6f 77 2e 75 73 65 63 29 20 2f ec + now.usec) /
5560: 20 31 30 30 30 30 30 30 3b 0a 2d 09 20 20 20 20 1000000;.-.
5570: 20 20 20 70 74 69 6d 65 2e 74 76 5f 6e 73 65 63 ptime.tv_nsec
5580: 20 3d 20 31 30 30 30 20 2a 20 28 28 74 69 6d 65 = 1000 * ((time
5590: 50 74 72 2d 3e 75 73 65 63 20 2b 20 6e 6f 77 2e Ptr->usec + now.
55a0: 75 73 65 63 29 20 25 20 31 30 30 30 30 30 30 29 usec) % 1000000)
55b0: 3b 0a 2b 23 69 66 20 64 65 66 69 6e 65 64 28 48 ;.+#if defined(H
55c0: 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d AVE_CLOCK_GETTIM
55d0: 45 29 20 26 26 20 64 65 66 69 6e 65 64 28 48 41 E) && defined(HA
55e0: 56 45 5f 50 54 48 52 45 41 44 5f 43 4f 4e 44 41 VE_PTHREAD_CONDA
55f0: 54 54 52 5f 53 45 54 43 4c 4f 43 4b 29 0a 2b 09 TTR_SETCLOCK).+.
5600: 09 69 66 20 28 74 73 64 50 74 72 2d 3e 6d 6f 6e .if (tsdPtr->mon
5610: 6f 43 6c 6f 63 6b 29 20 7b 0a 2b 09 09 20 20 20 oClock) {.+..
5620: 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 43 clock_gettime(C
5630: 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e 49 43 2c 20 LOCK_MONOTONIC,
5640: 26 70 74 69 6d 65 29 3b 0a 2b 09 09 7d 20 65 6c &ptime);.+..} el
5650: 73 65 20 7b 0a 2b 09 09 20 20 20 20 63 6c 6f 63 se {.+.. cloc
5660: 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f k_gettime(CLOCK_
5670: 52 45 41 4c 54 49 4d 45 2c 20 26 70 74 69 6d 65 REALTIME, &ptime
5680: 29 3b 0a 2b 09 09 7d 0a 2b 09 09 70 74 69 6d 65 );.+..}.+..ptime
5690: 2e 74 76 5f 73 65 63 20 2b 3d 20 74 69 6d 65 50 .tv_sec += timeP
56a0: 74 72 2d 3e 73 65 63 20 2b 0a 2b 09 09 20 20 20 tr->sec +.+..
56b0: 20 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 20 (timePtr->usec
56c0: 2a 20 31 30 30 30 20 2b 20 70 74 69 6d 65 2e 74 * 1000 + ptime.t
56d0: 76 5f 6e 73 65 63 29 20 2f 20 31 30 30 30 30 30 v_nsec) / 100000
56e0: 30 30 30 30 3b 0a 2b 09 09 70 74 69 6d 65 2e 74 0000;.+..ptime.t
56f0: 76 5f 6e 73 65 63 20 3d 20 28 74 69 6d 65 50 74 v_nsec = (timePt
5700: 72 2d 3e 75 73 65 63 20 2a 20 31 30 30 30 20 2b r->usec * 1000 +
5710: 20 70 74 69 6d 65 2e 74 76 5f 6e 73 65 63 29 20 ptime.tv_nsec)
5720: 25 0a 2b 09 09 20 20 20 20 31 30 30 30 30 30 30 %.+.. 1000000
5730: 30 30 30 3b 0a 2b 23 65 6c 73 65 0a 2b 09 09 54 000;.+#else.+..T
5740: 63 6c 5f 54 69 6d 65 20 6e 6f 77 3b 0a 20 0a 2d cl_Time now;. .-
5750: 09 20 20 20 20 20 20 20 70 74 68 72 65 61 64 5f . pthread_
5760: 63 6f 6e 64 5f 74 69 6d 65 64 77 61 69 74 28 26 cond_timedwait(&
5770: 74 73 64 50 74 72 2d 3e 77 61 69 74 43 56 2c 20 tsdPtr->waitCV,
5780: 26 6e 6f 74 69 66 69 65 72 4d 75 74 65 78 2c 20 ¬ifierMutex,
5790: 26 70 74 69 6d 65 29 3b 0a 2b 09 09 54 63 6c 5f &ptime);.+..Tcl_
57a0: 47 65 74 54 69 6d 65 28 26 6e 6f 77 29 3b 0a 2b GetTime(&now);.+
57b0: 09 09 70 74 69 6d 65 2e 74 76 5f 73 65 63 20 3d ..ptime.tv_sec =
57c0: 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 20 2b 20 timePtr->sec +
57d0: 6e 6f 77 2e 73 65 63 20 2b 0a 2b 09 09 20 20 20 now.sec +.+..
57e0: 20 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 20 (timePtr->usec
57f0: 2b 20 6e 6f 77 2e 75 73 65 63 29 20 2f 20 31 30 + now.usec) / 10
5800: 30 30 30 30 30 3b 0a 2b 09 09 70 74 69 6d 65 2e 00000;.+..ptime.
5810: 74 76 5f 6e 73 65 63 20 3d 20 31 30 30 30 20 2a tv_nsec = 1000 *
5820: 20 28 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 ((timePtr->usec
5830: 20 2b 20 6e 6f 77 2e 75 73 65 63 29 20 25 20 31 + now.usec) % 1
5840: 30 30 30 30 30 30 29 3b 0a 2b 23 65 6e 64 69 66 000000);.+#endif
5850: 0a 2b 09 09 70 74 68 72 65 61 64 5f 63 6f 6e 64 .+..pthread_cond
5860: 5f 74 69 6d 65 64 77 61 69 74 28 26 74 73 64 50 _timedwait(&tsdP
5870: 74 72 2d 3e 77 61 69 74 43 56 2c 20 26 6e 6f 74 tr->waitCV, ¬
5880: 69 66 69 65 72 4d 75 74 65 78 2c 20 26 70 74 69 ifierMutex, &pti
5890: 6d 65 29 3b 0a 20 09 20 20 20 20 7d 20 65 6c 73 me);. . } els
58a0: 65 20 7b 0a 2d 09 20 20 20 20 20 20 20 70 74 68 e {.-. pth
58b0: 72 65 61 64 5f 63 6f 6e 64 5f 77 61 69 74 28 26 read_cond_wait(&
58c0: 74 73 64 50 74 72 2d 3e 77 61 69 74 43 56 2c 20 tsdPtr->waitCV,
58d0: 26 6e 6f 74 69 66 69 65 72 4d 75 74 65 78 29 3b ¬ifierMutex);
58e0: 0a 2b 09 09 70 74 68 72 65 61 64 5f 63 6f 6e 64 .+..pthread_cond
58f0: 5f 77 61 69 74 28 26 74 73 64 50 74 72 2d 3e 77 _wait(&tsdPtr->w
5900: 61 69 74 43 56 2c 20 26 6e 6f 74 69 66 69 65 72 aitCV, ¬ifier
5910: 4d 75 74 65 78 29 3b 0a 20 09 20 20 20 20 7d 0a Mutex);. . }.
5920: 20 23 65 6e 64 69 66 20 2f 2a 20 5f 5f 43 59 47 #endif /* __CYG
5930: 57 49 4e 5f 5f 20 2a 2f 0a 20 09 7d 0a 64 69 66 WIN__ */. .}.dif
5940: 66 20 2d 75 72 20 74 63 6c 38 2e 36 2e 35 2d 6f f -ur tcl8.6.5-o
5950: 72 69 67 2f 75 6e 69 78 2f 74 63 6c 55 6e 69 78 rig/unix/tclUnix
5960: 50 6f 72 74 2e 68 20 74 63 6c 38 2e 36 2e 35 2f Port.h tcl8.6.5/
5970: 75 6e 69 78 2f 74 63 6c 55 6e 69 78 50 6f 72 74 unix/tclUnixPort
5980: 2e 68 0a 2d 2d 2d 20 74 63 6c 38 2e 36 2e 35 2d .h.--- tcl8.6.5-
5990: 6f 72 69 67 2f 75 6e 69 78 2f 74 63 6c 55 6e 69 orig/unix/tclUni
59a0: 78 50 6f 72 74 2e 68 09 32 30 31 36 2d 30 32 2d xPort.h.2016-02-
59b0: 32 35 20 32 31 3a 31 32 3a 33 38 2e 30 30 30 30 25 21:12:38.0000
59c0: 30 30 30 30 30 20 2b 30 31 30 30 0a 2b 2b 2b 20 00000 +0100.+++
59d0: 74 63 6c 38 2e 36 2e 35 2f 75 6e 69 78 2f 74 63 tcl8.6.5/unix/tc
59e0: 6c 55 6e 69 78 50 6f 72 74 2e 68 09 32 30 31 36 lUnixPort.h.2016
59f0: 2d 30 33 2d 32 35 20 30 36 3a 34 33 3a 34 34 2e -03-25 06:43:44.
5a00: 32 30 36 36 31 37 36 32 33 20 2b 30 31 30 30 0a 206617623 +0100.
5a10: 40 40 20 2d 36 34 30 2c 36 20 2b 36 34 30 2c 32 @@ -640,6 +640,2
5a20: 35 20 40 40 0a 20 0c 0a 20 2f 2a 0a 20 20 2a 2d 5 @@. .. /*. *-
5a30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5a40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5a50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5a60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5a70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 20 55 ----------.+ * U
5a80: 73 65 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 se clock_gettime
5a90: 28 29 20 6f 6e 6c 79 20 69 66 20 5f 50 4f 53 49 () only if _POSI
5aa0: 58 5f 4d 4f 4e 4f 54 4f 4e 49 43 5f 43 4c 4f 43 X_MONOTONIC_CLOC
5ab0: 4b 20 70 72 65 73 65 6e 74 2e 0a 2b 20 2a 2d 2d K present..+ *--
5ac0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5ad0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5ae0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5af0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5b00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b ---------.+ */.+
5b10: 0a 2b 23 69 66 20 64 65 66 69 6e 65 64 28 48 41 .+#if defined(HA
5b20: 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 VE_CLOCK_GETTIME
5b30: 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 50 ) && !defined(_P
5b40: 4f 53 49 58 5f 4d 4f 4e 4f 54 4f 4e 49 43 5f 43 OSIX_MONOTONIC_C
5b50: 4c 4f 43 4b 29 0a 2b 23 20 20 20 75 6e 64 65 66 LOCK).+# undef
5b60: 20 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 HAVE_CLOCK_GETT
5b70: 49 4d 45 0a 2b 23 65 6e 64 69 66 0a 2b 0a 2b 23 IME.+#endif.+.+#
5b80: 69 66 64 65 66 20 54 43 4c 5f 54 48 52 45 41 44 ifdef TCL_THREAD
5b90: 53 0a 2b 23 20 20 20 69 66 6e 64 65 66 20 48 41 S.+# ifndef HA
5ba0: 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 VE_CLOCK_GETTIME
5bb0: 0a 2b 23 09 75 6e 64 65 66 20 48 41 56 45 5f 50 .+#.undef HAVE_P
5bc0: 54 48 52 45 41 44 5f 43 4f 4e 44 41 54 54 52 5f THREAD_CONDATTR_
5bd0: 53 45 54 43 4c 4f 43 4b 0a 2b 23 20 20 20 65 6e SETCLOCK.+# en
5be0: 64 69 66 0a 2b 23 20 20 20 69 66 6e 64 65 66 20 dif.+# ifndef
5bf0: 48 41 56 45 5f 50 54 48 52 45 41 44 5f 43 4f 4e HAVE_PTHREAD_CON
5c00: 44 41 54 54 52 5f 53 45 54 43 4c 4f 43 4b 0a 2b DATTR_SETCLOCK.+
5c10: 23 09 75 6e 64 65 66 20 48 41 56 45 5f 43 4c 4f #.undef HAVE_CLO
5c20: 43 4b 5f 47 45 54 54 49 4d 45 0a 2b 23 20 20 20 CK_GETTIME.+#
5c30: 65 6e 64 69 66 0a 2b 23 65 6e 64 69 66 0a 2b 0c endif.+#endif.+.
5c40: 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d .+/*.+ *--------
5c50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5c60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5c70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5c80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5c90: 2d 2d 2d 0a 20 20 2a 20 54 68 65 20 66 6f 6c 6c ---. * The foll
5ca0: 6f 77 69 6e 67 20 6d 61 63 72 6f 73 20 61 6e 64 owing macros and
5cb0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 72 65 declarations re
5cc0: 70 72 65 73 65 6e 74 20 74 68 65 20 69 6e 74 65 present the inte
5cd0: 72 66 61 63 65 20 62 65 74 77 65 65 6e 0a 20 20 rface between.
5ce0: 2a 20 67 65 6e 65 72 69 63 20 61 6e 64 20 75 6e * generic and un
5cf0: 69 78 2d 73 70 65 63 69 66 69 63 20 70 61 72 74 ix-specific part
5d00: 73 20 6f 66 20 54 63 6c 2e 20 53 6f 6d 65 20 6f s of Tcl. Some o
5d10: 66 20 74 68 65 20 6d 61 63 72 6f 73 20 6d 61 79 f the macros may
5d20: 20 6f 76 65 72 72 69 64 65 0a 20 20 2a 20 66 75 override. * fu
5d30: 6e 63 74 69 6f 6e 73 20 64 65 63 6c 61 72 65 64 nctions declared
5d40: 20 69 6e 20 74 63 6c 49 6e 74 2e 68 2e 0a 64 69 in tclInt.h..di
5d50: 66 66 20 2d 75 72 20 74 63 6c 38 2e 36 2e 35 2d ff -ur tcl8.6.5-
5d60: 6f 72 69 67 2f 75 6e 69 78 2f 74 63 6c 55 6e 69 orig/unix/tclUni
5d70: 78 54 68 72 64 2e 63 20 74 63 6c 38 2e 36 2e 35 xThrd.c tcl8.6.5
5d80: 2f 75 6e 69 78 2f 74 63 6c 55 6e 69 78 54 68 72 /unix/tclUnixThr
5d90: 64 2e 63 0a 2d 2d 2d 20 74 63 6c 38 2e 36 2e 35 d.c.--- tcl8.6.5
5da0: 2d 6f 72 69 67 2f 75 6e 69 78 2f 74 63 6c 55 6e -orig/unix/tclUn
5db0: 69 78 54 68 72 64 2e 63 09 32 30 31 36 2d 30 32 ixThrd.c.2016-02
5dc0: 2d 32 35 20 32 31 3a 31 32 3a 33 38 2e 30 30 30 -25 21:12:38.000
5dd0: 30 30 30 30 30 30 20 2b 30 31 30 30 0a 2b 2b 2b 000000 +0100.+++
5de0: 20 74 63 6c 38 2e 36 2e 35 2f 75 6e 69 78 2f 74 tcl8.6.5/unix/t
5df0: 63 6c 55 6e 69 78 54 68 72 64 2e 63 09 32 30 31 clUnixThrd.c.201
5e00: 36 2d 30 33 2d 32 35 20 30 36 3a 34 36 3a 31 39 6-03-25 06:46:19
5e10: 2e 31 33 32 31 38 38 32 39 35 20 2b 30 31 30 30 .132188295 +0100
5e20: 0a 40 40 20 2d 35 32 37 2c 36 20 2b 35 32 37 2c .@@ -527,6 +527,
5e30: 39 20 40 40 0a 20 20 20 20 20 70 74 68 72 65 61 9 @@. pthrea
5e40: 64 5f 63 6f 6e 64 5f 74 20 2a 70 63 6f 6e 64 50 d_cond_t *pcondP
5e50: 74 72 3b 0a 20 20 20 20 20 70 74 68 72 65 61 64 tr;. pthread
5e60: 5f 6d 75 74 65 78 5f 74 20 2a 70 6d 75 74 65 78 _mutex_t *pmutex
5e70: 50 74 72 3b 0a 20 20 20 20 20 73 74 72 75 63 74 Ptr;. struct
5e80: 20 74 69 6d 65 73 70 65 63 20 70 74 69 6d 65 3b timespec ptime;
5e90: 0a 2b 23 69 66 20 64 65 66 69 6e 65 64 28 48 41 .+#if defined(HA
5ea0: 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 VE_CLOCK_GETTIME
5eb0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 48 41 56 ) && defined(HAV
5ec0: 45 5f 50 54 48 52 45 41 44 5f 43 4f 4e 44 41 54 E_PTHREAD_CONDAT
5ed0: 54 52 5f 53 45 54 43 4c 4f 43 4b 29 0a 2b 20 20 TR_SETCLOCK).+
5ee0: 20 20 69 6e 74 20 2a 66 6c 61 67 50 74 72 3b 0a int *flagPtr;.
5ef0: 2b 23 65 6e 64 69 66 0a 20 0a 20 20 20 20 20 69 +#endif. . i
5f00: 66 20 28 2a 63 6f 6e 64 50 74 72 20 3d 3d 20 4e f (*condPtr == N
5f10: 55 4c 4c 29 20 7b 0a 20 09 4d 41 53 54 45 52 5f ULL) {. .MASTER_
5f20: 4c 4f 43 4b 3b 0a 40 40 20 2d 35 33 37 2c 38 20 LOCK;.@@ -537,8
5f30: 2b 35 34 30 2c 32 36 20 40 40 0a 20 09 20 2a 2f +540,26 @@. . */
5f40: 0a 20 0a 20 09 69 66 20 28 2a 63 6f 6e 64 50 74 . . .if (*condPt
5f50: 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 23 69 r == NULL) {.+#i
5f60: 66 20 64 65 66 69 6e 65 64 28 48 41 56 45 5f 43 f defined(HAVE_C
5f70: 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 29 20 26 26 LOCK_GETTIME) &&
5f80: 20 64 65 66 69 6e 65 64 28 48 41 56 45 5f 50 54 defined(HAVE_PT
5f90: 48 52 45 41 44 5f 43 4f 4e 44 41 54 54 52 5f 53 HREAD_CONDATTR_S
5fa0: 45 54 43 4c 4f 43 4b 29 0a 2b 09 20 20 20 20 70 ETCLOCK).+. p
5fb0: 74 68 72 65 61 64 5f 63 6f 6e 64 61 74 74 72 5f thread_condattr_
5fc0: 74 20 61 74 74 72 3b 0a 2b 0a 2b 09 20 20 20 20 t attr;.+.+.
5fd0: 70 63 6f 6e 64 50 74 72 20 3d 20 63 6b 61 6c 6c pcondPtr = ckall
5fe0: 6f 63 28 73 69 7a 65 6f 66 28 70 74 68 72 65 61 oc(sizeof(pthrea
5ff0: 64 5f 63 6f 6e 64 5f 74 29 20 2b 20 73 69 7a 65 d_cond_t) + size
6000: 6f 66 28 69 6e 74 29 29 3b 0a 2b 09 20 20 20 20 of(int));.+.
6010: 66 6c 61 67 50 74 72 20 3d 20 28 69 6e 74 20 2a flagPtr = (int *
6020: 29 20 28 70 63 6f 6e 64 50 74 72 20 2b 20 31 29 ) (pcondPtr + 1)
6030: 3b 0a 2b 09 20 20 20 20 70 74 68 72 65 61 64 5f ;.+. pthread_
6040: 63 6f 6e 64 61 74 74 72 5f 69 6e 69 74 28 26 61 condattr_init(&a
6050: 74 74 72 29 3b 0a 2b 09 20 20 20 20 2a 66 6c 61 ttr);.+. *fla
6060: 67 50 74 72 20 3d 20 70 74 68 72 65 61 64 5f 63 gPtr = pthread_c
6070: 6f 6e 64 61 74 74 72 5f 73 65 74 63 6c 6f 63 6b ondattr_setclock
6080: 28 26 61 74 74 72 2c 20 43 4c 4f 43 4b 5f 4d 4f (&attr, CLOCK_MO
6090: 4e 4f 54 4f 4e 49 43 29 20 3d 3d 20 30 3b 0a 2b NOTONIC) == 0;.+
60a0: 09 20 20 20 20 69 66 20 28 2a 66 6c 61 67 50 74 . if (*flagPt
60b0: 72 29 20 7b 0a 2b 09 09 69 66 20 28 70 74 68 72 r) {.+..if (pthr
60c0: 65 61 64 5f 63 6f 6e 64 5f 69 6e 69 74 28 70 63 ead_cond_init(pc
60d0: 6f 6e 64 50 74 72 2c 20 26 61 74 74 72 29 29 20 ondPtr, &attr))
60e0: 7b 0a 2b 09 09 20 20 20 20 2a 66 6c 61 67 50 74 {.+.. *flagPt
60f0: 72 20 3d 20 30 3b 0a 2b 09 09 20 20 20 20 70 74 r = 0;.+.. pt
6100: 68 72 65 61 64 5f 63 6f 6e 64 5f 69 6e 69 74 28 hread_cond_init(
6110: 70 63 6f 6e 64 50 74 72 2c 20 4e 55 4c 4c 29 3b pcondPtr, NULL);
6120: 0a 2b 09 09 7d 0a 2b 09 20 20 20 20 7d 20 65 6c .+..}.+. } el
6130: 73 65 20 7b 0a 2b 09 09 70 74 68 72 65 61 64 5f se {.+..pthread_
6140: 63 6f 6e 64 5f 69 6e 69 74 28 70 63 6f 6e 64 50 cond_init(pcondP
6150: 74 72 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 20 20 20 tr, NULL);.+.
6160: 20 7d 0a 2b 09 20 20 20 20 70 74 68 72 65 61 64 }.+. pthread
6170: 5f 63 6f 6e 64 61 74 74 72 5f 64 65 73 74 72 6f _condattr_destro
6180: 79 28 26 61 74 74 72 29 3b 0a 2b 23 65 6c 73 65 y(&attr);.+#else
6190: 0a 20 09 20 20 20 20 70 63 6f 6e 64 50 74 72 20 . . pcondPtr
61a0: 3d 20 63 6b 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 = ckalloc(sizeof
61b0: 28 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f 74 29 (pthread_cond_t)
61c0: 29 3b 0a 20 09 20 20 20 20 70 74 68 72 65 61 64 );. . pthread
61d0: 5f 63 6f 6e 64 5f 69 6e 69 74 28 70 63 6f 6e 64 _cond_init(pcond
61e0: 50 74 72 2c 20 4e 55 4c 4c 29 3b 0a 2b 23 65 6e Ptr, NULL);.+#en
61f0: 64 69 66 0a 20 09 20 20 20 20 2a 63 6f 6e 64 50 dif. . *condP
6200: 74 72 20 3d 20 28 54 63 6c 5f 43 6f 6e 64 69 74 tr = (Tcl_Condit
6210: 69 6f 6e 29 20 70 63 6f 6e 64 50 74 72 3b 0a 20 ion) pcondPtr;.
6220: 09 20 20 20 20 54 63 6c 52 65 6d 65 6d 62 65 72 . TclRemember
6230: 43 6f 6e 64 69 74 69 6f 6e 28 63 6f 6e 64 50 74 Condition(condPt
6240: 72 29 3b 0a 20 09 7d 0a 40 40 20 2d 35 34 39 2c r);. .}.@@ -549,
6250: 36 20 2b 35 37 30 2c 31 37 20 40 40 0a 20 20 20 6 +570,17 @@.
6260: 20 20 69 66 20 28 74 69 6d 65 50 74 72 20 3d 3d if (timePtr ==
6270: 20 4e 55 4c 4c 29 20 7b 0a 20 09 70 74 68 72 65 NULL) {. .pthre
6280: 61 64 5f 63 6f 6e 64 5f 77 61 69 74 28 70 63 6f ad_cond_wait(pco
6290: 6e 64 50 74 72 2c 20 70 6d 75 74 65 78 50 74 72 ndPtr, pmutexPtr
62a0: 29 3b 0a 20 20 20 20 20 7d 20 65 6c 73 65 20 7b );. } else {
62b0: 0a 2b 23 69 66 20 64 65 66 69 6e 65 64 28 48 41 .+#if defined(HA
62c0: 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 VE_CLOCK_GETTIME
62d0: 29 20 26 26 20 64 65 66 69 6e 65 64 28 48 41 56 ) && defined(HAV
62e0: 45 5f 50 54 48 52 45 41 44 5f 43 4f 4e 44 41 54 E_PTHREAD_CONDAT
62f0: 54 52 5f 53 45 54 43 4c 4f 43 4b 29 0a 2b 09 66 TR_SETCLOCK).+.f
6300: 6c 61 67 50 74 72 20 3d 20 28 69 6e 74 20 2a 29 lagPtr = (int *)
6310: 20 28 70 63 6f 6e 64 50 74 72 20 2b 20 31 29 3b (pcondPtr + 1);
6320: 0a 2b 09 69 66 20 28 2a 66 6c 61 67 50 74 72 29 .+.if (*flagPtr)
6330: 20 7b 0a 2b 09 20 20 20 20 63 6c 6f 63 6b 5f 67 {.+. clock_g
6340: 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e ettime(CLOCK_MON
6350: 4f 54 4f 4e 49 43 2c 20 26 70 74 69 6d 65 29 3b OTONIC, &ptime);
6360: 0a 2b 09 7d 20 65 6c 73 65 20 7b 0a 2b 09 20 20 .+.} else {.+.
6370: 20 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 clock_gettime(
6380: 43 4c 4f 43 4b 5f 52 45 41 4c 54 49 4d 45 2c 20 CLOCK_REALTIME,
6390: 26 70 74 69 6d 65 29 3b 0a 2b 09 7d 0a 2b 09 70 &ptime);.+.}.+.p
63a0: 74 69 6d 65 2e 74 76 5f 73 65 63 20 2b 3d 20 74 time.tv_sec += t
63b0: 69 6d 65 50 74 72 2d 3e 73 65 63 20 2b 0a 2b 09 imePtr->sec +.+.
63c0: 20 20 20 20 28 74 69 6d 65 50 74 72 2d 3e 75 73 (timePtr->us
63d0: 65 63 20 2a 20 31 30 30 30 20 2b 20 70 74 69 6d ec * 1000 + ptim
63e0: 65 2e 74 76 5f 6e 73 65 63 29 20 2f 20 31 30 30 e.tv_nsec) / 100
63f0: 30 30 30 30 30 30 30 3b 0a 2b 09 70 74 69 6d 65 0000000;.+.ptime
6400: 2e 74 76 5f 6e 73 65 63 20 3d 20 28 74 69 6d 65 .tv_nsec = (time
6410: 50 74 72 2d 3e 75 73 65 63 20 2a 20 31 30 30 30 Ptr->usec * 1000
6420: 20 2b 20 70 74 69 6d 65 2e 74 76 5f 6e 73 65 63 + ptime.tv_nsec
6430: 29 20 25 20 31 30 30 30 30 30 30 30 30 30 3b 0a ) % 1000000000;.
6440: 2b 23 65 6c 73 65 0a 20 09 54 63 6c 5f 54 69 6d +#else. .Tcl_Tim
6450: 65 20 6e 6f 77 3b 0a 20 0a 20 09 2f 2a 0a 40 40 e now;. . ./*.@@
6460: 20 2d 35 36 30 2c 36 20 2b 35 39 32 2c 37 20 40 -560,6 +592,7 @
6470: 40 0a 20 09 70 74 69 6d 65 2e 74 76 5f 73 65 63 @. .ptime.tv_sec
6480: 20 3d 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 20 = timePtr->sec
6490: 2b 20 6e 6f 77 2e 73 65 63 20 2b 0a 20 09 20 20 + now.sec +. .
64a0: 20 20 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 (timePtr->usec
64b0: 20 2b 20 6e 6f 77 2e 75 73 65 63 29 20 2f 20 31 + now.usec) / 1
64c0: 30 30 30 30 30 30 3b 0a 20 09 70 74 69 6d 65 2e 000000;. .ptime.
64d0: 74 76 5f 6e 73 65 63 20 3d 20 31 30 30 30 20 2a tv_nsec = 1000 *
64e0: 20 28 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 ((timePtr->usec
64f0: 20 2b 20 6e 6f 77 2e 75 73 65 63 29 20 25 20 31 + now.usec) % 1
6500: 30 30 30 30 30 30 29 3b 0a 2b 23 65 6e 64 69 66 000000);.+#endif
6510: 0a 20 09 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f . .pthread_cond_
6520: 74 69 6d 65 64 77 61 69 74 28 70 63 6f 6e 64 50 timedwait(pcondP
6530: 74 72 2c 20 70 6d 75 74 65 78 50 74 72 2c 20 26 tr, pmutexPtr, &
6540: 70 74 69 6d 65 29 3b 0a 20 20 20 20 20 7d 0a 20 ptime);. }.
6550: 7d 0a 64 69 66 66 20 2d 75 72 20 74 63 6c 38 2e }.diff -ur tcl8.
6560: 36 2e 35 2d 6f 72 69 67 2f 75 6e 69 78 2f 74 63 6.5-orig/unix/tc
6570: 6c 55 6e 69 78 54 69 6d 65 2e 63 20 74 63 6c 38 lUnixTime.c tcl8
6580: 2e 36 2e 35 2f 75 6e 69 78 2f 74 63 6c 55 6e 69 .6.5/unix/tclUni
6590: 78 54 69 6d 65 2e 63 0a 2d 2d 2d 20 74 63 6c 38 xTime.c.--- tcl8
65a0: 2e 36 2e 35 2d 6f 72 69 67 2f 75 6e 69 78 2f 74 .6.5-orig/unix/t
65b0: 63 6c 55 6e 69 78 54 69 6d 65 2e 63 09 32 30 31 clUnixTime.c.201
65c0: 36 2d 30 32 2d 32 35 20 32 31 3a 31 32 3a 33 38 6-02-25 21:12:38
65d0: 2e 30 30 30 30 30 30 30 30 30 20 2b 30 31 30 30 .000000000 +0100
65e0: 0a 2b 2b 2b 20 74 63 6c 38 2e 36 2e 35 2f 75 6e .+++ tcl8.6.5/un
65f0: 69 78 2f 74 63 6c 55 6e 69 78 54 69 6d 65 2e 63 ix/tclUnixTime.c
6600: 09 32 30 31 36 2d 30 33 2d 32 35 20 30 36 3a 34 .2016-03-25 06:4
6610: 35 3a 32 39 2e 38 38 39 37 38 32 31 38 34 20 2b 5:29.889782184 +
6620: 30 31 30 30 0a 40 40 20 2d 31 30 35 2c 36 20 2b 0100.@@ -105,6 +
6630: 31 30 35 2c 31 34 20 40 40 0a 20 7b 0a 20 20 20 105,14 @@. {.
6640: 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f 6e 67 20 unsigned long
6650: 6e 6f 77 3b 0a 20 0a 2b 23 69 66 64 65 66 20 48 now;. .+#ifdef H
6660: 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d AVE_CLOCK_GETTIM
6670: 45 0a 2b 20 20 20 20 73 74 72 75 63 74 20 74 69 E.+ struct ti
6680: 6d 65 73 70 65 63 20 74 73 3b 0a 2b 0a 2b 20 20 mespec ts;.+.+
6690: 20 20 69 66 20 28 63 6c 6f 63 6b 5f 67 65 74 74 if (clock_gett
66a0: 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f ime(CLOCK_MONOTO
66b0: 4e 49 43 2c 20 26 74 73 29 20 3d 3d 20 2d 31 29 NIC, &ts) == -1)
66c0: 20 7b 0a 2b 09 63 6c 6f 63 6b 5f 67 65 74 74 69 {.+.clock_getti
66d0: 6d 65 28 43 4c 4f 43 4b 5f 52 45 41 4c 54 49 4d me(CLOCK_REALTIM
66e0: 45 2c 20 26 74 73 29 3b 0a 2b 20 20 20 20 7d 0a E, &ts);.+ }.
66f0: 2b 20 20 20 20 6e 6f 77 20 3d 20 74 73 2e 74 76 + now = ts.tv
6700: 5f 73 65 63 20 2a 20 31 30 30 30 30 30 30 20 2b _sec * 1000000 +
6710: 20 74 73 2e 74 76 5f 6e 73 65 63 20 2f 20 31 30 ts.tv_nsec / 10
6720: 30 30 3b 0a 2b 23 65 6c 73 65 0a 20 23 69 66 64 00;.+#else. #ifd
6730: 65 66 20 4e 4f 5f 47 45 54 54 4f 44 0a 20 20 20 ef NO_GETTOD.
6740: 20 20 69 66 20 28 74 63 6c 47 65 74 54 69 6d 65 if (tclGetTime
6750: 50 72 6f 63 50 74 72 20 21 3d 20 4e 61 74 69 76 ProcPtr != Nativ
6760: 65 47 65 74 54 69 6d 65 29 20 7b 0a 20 09 54 63 eGetTime) {. .Tc
6770: 6c 5f 54 69 6d 65 20 74 69 6d 65 3b 0a 40 40 20 l_Time time;.@@
6780: 2d 31 32 35 2c 36 20 2b 31 33 33 2c 37 20 40 40 -125,6 +133,7 @@
6790: 0a 20 20 20 20 20 74 63 6c 47 65 74 54 69 6d 65 . tclGetTime
67a0: 50 72 6f 63 50 74 72 28 26 74 69 6d 65 2c 20 74 ProcPtr(&time, t
67b0: 63 6c 54 69 6d 65 43 6c 69 65 6e 74 44 61 74 61 clTimeClientData
67c0: 29 3b 0a 20 20 20 20 20 6e 6f 77 20 3d 20 74 69 );. now = ti
67d0: 6d 65 2e 73 65 63 2a 31 30 30 30 30 30 30 20 2b me.sec*1000000 +
67e0: 20 74 69 6d 65 2e 75 73 65 63 3b 0a 20 23 65 6e time.usec;. #en
67f0: 64 69 66 0a 2b 23 65 6e 64 69 66 0a 20 0a 20 20 dif.+#endif. .
6800: 20 20 20 72 65 74 75 72 6e 20 6e 6f 77 3b 0a 20 return now;.
6810: 7d 0a 40 40 20 2d 33 37 36 2c 39 20 2b 33 38 35 }.@@ -376,9 +385
6820: 2c 31 31 20 40 40 0a 20 20 20 20 20 54 63 6c 5f ,11 @@. Tcl_
6830: 53 63 61 6c 65 54 69 6d 65 50 72 6f 63 20 2a 73 ScaleTimeProc *s
6840: 63 61 6c 65 50 72 6f 63 2c 0a 20 20 20 20 20 43 caleProc,. C
6850: 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 lientData client
6860: 44 61 74 61 29 0a 20 7b 0a 2b 23 69 66 6e 64 65 Data). {.+#ifnde
6870: 66 20 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 f HAVE_CLOCK_GET
6880: 54 49 4d 45 0a 20 20 20 20 20 74 63 6c 47 65 74 TIME. tclGet
6890: 54 69 6d 65 50 72 6f 63 50 74 72 20 3d 20 67 65 TimeProcPtr = ge
68a0: 74 50 72 6f 63 3b 0a 20 20 20 20 20 74 63 6c 53 tProc;. tclS
68b0: 63 61 6c 65 54 69 6d 65 50 72 6f 63 50 74 72 20 caleTimeProcPtr
68c0: 3d 20 73 63 61 6c 65 50 72 6f 63 3b 0a 20 20 20 = scaleProc;.
68d0: 20 20 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 44 tclTimeClientD
68e0: 61 74 61 20 3d 20 63 6c 69 65 6e 74 44 61 74 61 ata = clientData
68f0: 3b 0a 2b 23 65 6e 64 69 66 0a 20 7d 0a 20 0c 0a ;.+#endif. }. ..
6900: 20 2f 2a 0a 64 69 66 66 20 2d 75 72 20 74 63 6c /*.diff -ur tcl
6910: 38 2e 36 2e 35 2d 6f 72 69 67 2f 77 69 6e 2f 63 8.6.5-orig/win/c
6920: 6f 6e 66 69 67 75 72 65 20 74 63 6c 38 2e 36 2e onfigure tcl8.6.
6930: 35 2f 77 69 6e 2f 63 6f 6e 66 69 67 75 72 65 0a 5/win/configure.
6940: 2d 2d 2d 20 74 63 6c 38 2e 36 2e 35 2d 6f 72 69 --- tcl8.6.5-ori
6950: 67 2f 77 69 6e 2f 63 6f 6e 66 69 67 75 72 65 09 g/win/configure.
6960: 32 30 31 36 2d 30 32 2d 32 39 20 32 30 3a 31 33 2016-02-29 20:13
6970: 3a 30 39 2e 30 30 30 30 30 30 30 30 30 20 2b 30 :09.000000000 +0
6980: 31 30 30 0a 2b 2b 2b 20 74 63 6c 38 2e 36 2e 35 100.+++ tcl8.6.5
6990: 2f 77 69 6e 2f 63 6f 6e 66 69 67 75 72 65 09 32 /win/configure.2
69a0: 30 31 36 2d 30 33 2d 32 35 20 30 36 3a 35 35 3a 016-03-25 06:55:
69b0: 33 36 2e 30 30 30 30 30 30 30 30 30 20 2b 30 31 36.000000000 +01
69c0: 30 30 0a 40 40 20 2d 38 35 33 2c 36 20 2b 38 35 00.@@ -853,6 +85
69d0: 33 2c 38 20 40 40 0a 20 20 20 2d 2d 77 69 74 68 3,8 @@. --with
69e0: 6f 75 74 2d 50 41 43 4b 41 47 45 20 20 20 20 20 out-PACKAGE
69f0: 20 20 64 6f 20 6e 6f 74 20 75 73 65 20 50 41 43 do not use PAC
6a00: 4b 41 47 45 20 28 73 61 6d 65 20 61 73 20 2d 2d KAGE (same as --
6a10: 77 69 74 68 2d 50 41 43 4b 41 47 45 3d 6e 6f 29 with-PACKAGE=no)
6a20: 0a 20 20 20 2d 2d 77 69 74 68 2d 65 6e 63 6f 64 . --with-encod
6a30: 69 6e 67 20 20 20 20 20 20 20 20 20 65 6e 63 6f ing enco
6a40: 64 69 6e 67 20 66 6f 72 20 63 6f 6e 66 69 67 75 ding for configu
6a50: 72 61 74 69 6f 6e 20 76 61 6c 75 65 73 0a 20 20 ration values.
6a60: 20 2d 2d 77 69 74 68 2d 63 65 6c 69 62 3d 44 49 --with-celib=DI
6a70: 52 20 20 20 20 20 20 20 20 75 73 65 20 57 69 6e R use Win
6a80: 64 6f 77 73 2f 43 45 20 73 75 70 70 6f 72 74 20 dows/CE support
6a90: 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 44 49 52 library from DIR
6aa0: 0a 2b 20 20 2d 2d 77 69 74 68 2d 74 69 63 6b 63 .+ --with-tickc
6ab0: 6f 75 6e 74 20 20 20 20 20 20 20 20 75 73 65 20 ount use
6ac0: 47 65 74 54 69 63 6b 43 6f 75 6e 74 20 66 6f 72 GetTickCount for
6ad0: 20 74 69 6d 65 72 73 2c 20 74 75 72 6e 73 20 6f timers, turns o
6ae0: 66 66 20 69 6e 74 65 72 70 20 74 69 6d 65 0a 2b ff interp time.+
6af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6b00: 20 20 20 20 20 20 20 20 20 20 6c 69 6d 69 74 73 limits
6b10: 0a 20 0a 20 53 6f 6d 65 20 69 6e 66 6c 75 65 6e . . Some influen
6b20: 74 69 61 6c 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 tial environment
6b30: 20 76 61 72 69 61 62 6c 65 73 3a 0a 20 20 20 43 variables:. C
6b40: 43 20 20 20 20 20 20 20 20 20 20 43 20 63 6f 6d C C com
6b50: 70 69 6c 65 72 20 63 6f 6d 6d 61 6e 64 0a 40 40 piler command.@@
6b60: 20 2d 34 34 30 38 2c 36 20 2b 34 34 31 30 2c 32 -4408,6 +4410,2
6b70: 34 20 40 40 0a 20 5f 41 43 45 4f 46 0a 20 0a 20 4 @@. _ACEOF. .
6b80: 0a 2b 0a 2b 23 20 43 68 65 63 6b 20 77 68 65 74 .+.+# Check whet
6b90: 68 65 72 20 2d 2d 77 69 74 68 2d 74 69 63 6b 63 her --with-tickc
6ba0: 6f 75 6e 74 20 6f 72 20 2d 2d 77 69 74 68 6f 75 ount or --withou
6bb0: 74 2d 74 69 63 6b 63 6f 75 6e 74 20 77 61 73 20 t-tickcount was
6bc0: 67 69 76 65 6e 2e 0a 2b 69 66 20 74 65 73 74 20 given..+if test
6bd0: 22 24 7b 77 69 74 68 5f 74 69 63 6b 63 6f 75 6e "${with_tickcoun
6be0: 74 2b 73 65 74 7d 22 20 3d 20 73 65 74 3b 20 74 t+set}" = set; t
6bf0: 68 65 6e 0a 2b 20 20 77 69 74 68 76 61 6c 3d 22 hen.+ withval="
6c00: 24 77 69 74 68 5f 74 69 63 6b 63 6f 75 6e 74 22 $with_tickcount"
6c10: 0a 2b 20 20 74 63 6c 5f 6f 6b 3d 24 77 69 74 68 .+ tcl_ok=$with
6c20: 76 61 6c 0a 2b 65 6c 73 65 0a 2b 20 20 74 63 6c val.+else.+ tcl
6c30: 5f 6f 6b 3d 6e 6f 0a 2b 66 69 3b 0a 2b 65 63 68 _ok=no.+fi;.+ech
6c40: 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e o "$as_me:$LINEN
6c50: 4f 3a 20 72 65 73 75 6c 74 3a 20 24 74 63 6c 5f O: result: $tcl_
6c60: 6f 6b 22 20 3e 26 35 0a 2b 65 63 68 6f 20 22 24 ok" >&5.+echo "$
6c70: 7b 45 43 48 4f 5f 54 7d 24 74 63 6c 5f 6f 6b 22 {ECHO_T}$tcl_ok"
6c80: 20 3e 26 36 0a 2b 69 66 20 74 65 73 74 20 24 74 >&6.+if test $t
6c90: 63 6c 5f 6f 6b 20 3d 20 79 65 73 3b 20 74 68 65 cl_ok = yes; the
6ca0: 6e 0a 2b 0a 2b 63 61 74 20 3e 3e 63 6f 6e 66 64 n.+.+cat >>confd
6cb0: 65 66 73 2e 68 20 3c 3c 5c 5f 41 43 45 4f 46 0a efs.h <<\_ACEOF.
6cc0: 2b 23 64 65 66 69 6e 65 20 57 49 4e 33 32 5f 55 +#define WIN32_U
6cd0: 53 45 5f 54 49 43 4b 43 4f 55 4e 54 20 31 0a 2b SE_TICKCOUNT 1.+
6ce0: 5f 41 43 45 4f 46 0a 2b 0a 2b 66 69 0a 2b 0a 20 _ACEOF.+.+fi.+.
6cf0: 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 echo "$as_me:$LI
6d00: 4e 45 4e 4f 3a 20 63 68 65 63 6b 69 6e 67 20 66 NENO: checking f
6d10: 6f 72 20 69 6e 74 70 74 72 5f 74 22 20 3e 26 35 or intptr_t" >&5
6d20: 0a 20 65 63 68 6f 20 24 45 43 48 4f 5f 4e 20 22 . echo $ECHO_N "
6d30: 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 69 6e 74 checking for int
6d40: 70 74 72 5f 74 2e 2e 2e 20 24 45 43 48 4f 5f 43 ptr_t... $ECHO_C
6d50: 22 20 3e 26 36 0a 20 69 66 20 74 65 73 74 20 22 " >&6. if test "
6d60: 24 7b 61 63 5f 63 76 5f 74 79 70 65 5f 69 6e 74 ${ac_cv_type_int
6d70: 70 74 72 5f 74 2b 73 65 74 7d 22 20 3d 20 73 65 ptr_t+set}" = se
6d80: 74 3b 20 74 68 65 6e 0a 64 69 66 66 20 2d 75 72 t; then.diff -ur
6d90: 20 74 63 6c 38 2e 36 2e 35 2d 6f 72 69 67 2f 77 tcl8.6.5-orig/w
6da0: 69 6e 2f 63 6f 6e 66 69 67 75 72 65 2e 69 6e 20 in/configure.in
6db0: 74 63 6c 38 2e 36 2e 35 2f 77 69 6e 2f 63 6f 6e tcl8.6.5/win/con
6dc0: 66 69 67 75 72 65 2e 69 6e 0a 2d 2d 2d 20 74 63 figure.in.--- tc
6dd0: 6c 38 2e 36 2e 35 2d 6f 72 69 67 2f 77 69 6e 2f l8.6.5-orig/win/
6de0: 63 6f 6e 66 69 67 75 72 65 2e 69 6e 09 32 30 31 configure.in.201
6df0: 36 2d 30 32 2d 32 39 20 32 30 3a 31 33 3a 30 39 6-02-29 20:13:09
6e00: 2e 30 30 30 30 30 30 30 30 30 20 2b 30 31 30 30 .000000000 +0100
6e10: 0a 2b 2b 2b 20 74 63 6c 38 2e 36 2e 35 2f 77 69 .+++ tcl8.6.5/wi
6e20: 6e 2f 63 6f 6e 66 69 67 75 72 65 2e 69 6e 09 32 n/configure.in.2
6e30: 30 31 36 2d 30 33 2d 32 35 20 30 36 3a 34 37 3a 016-03-25 06:47:
6e40: 34 37 2e 37 31 32 35 31 36 37 34 37 20 2b 30 31 47.712516747 +01
6e50: 30 30 0a 40 40 20 2d 31 34 32 2c 36 20 2b 31 34 00.@@ -142,6 +14
6e60: 32 2c 31 35 20 40 40 0a 20 5d 29 0a 20 41 43 5f 2,15 @@. ]). AC_
6e70: 44 45 46 49 4e 45 28 48 41 56 45 5f 5a 4c 49 42 DEFINE(HAVE_ZLIB
6e80: 2c 20 31 2c 20 5b 49 73 20 74 68 65 72 65 20 61 , 1, [Is there a
6e90: 6e 20 69 6e 73 74 61 6c 6c 65 64 20 7a 6c 69 62 n installed zlib
6ea0: 3f 5d 29 0a 20 0a 2b 41 43 5f 41 52 47 5f 57 49 ?]). .+AC_ARG_WI
6eb0: 54 48 28 74 69 63 6b 63 6f 75 6e 74 2c 0a 2b 20 TH(tickcount,.+
6ec0: 20 20 20 41 43 5f 48 45 4c 50 5f 53 54 52 49 4e AC_HELP_STRIN
6ed0: 47 28 5b 2d 2d 77 69 74 68 2d 74 69 63 6b 63 6f G([--with-tickco
6ee0: 75 6e 74 5d 2c 0a 2b 09 5b 75 73 65 20 47 65 74 unt],.+.[use Get
6ef0: 54 69 63 6b 43 6f 75 6e 74 20 66 6f 72 20 74 69 TickCount for ti
6f00: 6d 65 72 73 2c 20 74 75 72 6e 73 20 6f 66 66 20 mers, turns off
6f10: 69 6e 74 65 72 70 20 74 69 6d 65 20 6c 69 6d 69 interp time limi
6f20: 74 73 5d 29 2c 0a 2b 20 20 20 20 5b 74 63 6c 5f ts]),.+ [tcl_
6f30: 6f 6b 3d 24 77 69 74 68 76 61 6c 5d 2c 20 5b 74 ok=$withval], [t
6f40: 63 6c 5f 6f 6b 3d 6e 6f 5d 29 0a 2b 41 43 5f 4d cl_ok=no]).+AC_M
6f50: 53 47 5f 52 45 53 55 4c 54 28 5b 24 74 63 6c 5f SG_RESULT([$tcl_
6f60: 6f 6b 5d 29 0a 2b 69 66 20 74 65 73 74 20 24 74 ok]).+if test $t
6f70: 63 6c 5f 6f 6b 20 3d 20 79 65 73 3b 20 74 68 65 cl_ok = yes; the
6f80: 6e 0a 2b 20 20 20 20 41 43 5f 44 45 46 49 4e 45 n.+ AC_DEFINE
6f90: 28 57 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 (WIN32_USE_TICKC
6fa0: 4f 55 4e 54 2c 20 31 2c 20 5b 55 73 65 20 47 65 OUNT, 1, [Use Ge
6fb0: 74 54 69 63 6b 43 6f 75 6e 74 20 66 6f 72 20 74 tTickCount for t
6fc0: 69 6d 65 72 73 3f 5d 29 0a 2b 66 69 0a 2b 0a 20 imers?]).+fi.+.
6fd0: 41 43 5f 43 48 45 43 4b 5f 54 59 50 45 28 5b 69 AC_CHECK_TYPE([i
6fe0: 6e 74 70 74 72 5f 74 5d 2c 20 5b 0a 20 20 20 20 ntptr_t], [.
6ff0: 20 41 43 5f 44 45 46 49 4e 45 28 5b 48 41 56 45 AC_DEFINE([HAVE
7000: 5f 49 4e 54 50 54 52 5f 54 5d 2c 20 31 2c 20 5b _INTPTR_T], 1, [
7010: 44 6f 20 77 65 20 68 61 76 65 20 74 68 65 20 69 Do we have the i
7020: 6e 74 70 74 72 5f 74 20 74 79 70 65 3f 5d 29 5d ntptr_t type?])]
7030: 2c 20 5b 0a 20 20 20 20 20 41 43 5f 43 41 43 48 , [. AC_CACH
7040: 45 5f 43 48 45 43 4b 28 5b 66 6f 72 20 70 6f 69 E_CHECK([for poi
7050: 6e 74 65 72 2d 73 69 7a 65 20 73 69 67 6e 65 64 nter-size signed
7060: 20 69 6e 74 65 67 65 72 20 74 79 70 65 5d 2c 20 integer type],
7070: 74 63 6c 5f 63 76 5f 69 6e 74 70 74 72 5f 74 2c tcl_cv_intptr_t,
7080: 20 5b 0a 64 69 66 66 20 2d 75 72 20 74 63 6c 38 [.diff -ur tcl8
7090: 2e 36 2e 35 2d 6f 72 69 67 2f 77 69 6e 2f 74 63 .6.5-orig/win/tc
70a0: 6c 57 69 6e 4e 6f 74 69 66 79 2e 63 20 74 63 6c lWinNotify.c tcl
70b0: 38 2e 36 2e 35 2f 77 69 6e 2f 74 63 6c 57 69 6e 8.6.5/win/tclWin
70c0: 4e 6f 74 69 66 79 2e 63 0a 2d 2d 2d 20 74 63 6c Notify.c.--- tcl
70d0: 38 2e 36 2e 35 2d 6f 72 69 67 2f 77 69 6e 2f 74 8.6.5-orig/win/t
70e0: 63 6c 57 69 6e 4e 6f 74 69 66 79 2e 63 09 32 30 clWinNotify.c.20
70f0: 31 36 2d 30 32 2d 32 35 20 32 30 3a 33 31 3a 32 16-02-25 20:31:2
7100: 30 2e 30 30 30 30 30 30 30 30 30 20 2b 30 31 30 0.000000000 +010
7110: 30 0a 2b 2b 2b 20 74 63 6c 38 2e 36 2e 35 2f 77 0.+++ tcl8.6.5/w
7120: 69 6e 2f 74 63 6c 57 69 6e 4e 6f 74 69 66 79 2e in/tclWinNotify.
7130: 63 09 32 30 31 36 2d 30 33 2d 32 35 20 30 36 3a c.2016-03-25 06:
7140: 34 38 3a 33 38 2e 34 38 31 39 39 39 35 37 34 20 48:38.481999574
7150: 2b 30 31 30 30 0a 40 40 20 2d 34 34 35 2c 36 20 +0100.@@ -445,6
7160: 2b 34 34 35 2c 31 32 20 40 40 0a 20 09 20 2a 2f +445,12 @@. . */
7170: 0a 20 0a 20 09 69 66 20 28 74 69 6d 65 50 74 72 . . .if (timePtr
7180: 29 20 7b 0a 2b 23 69 66 20 28 5f 57 49 4e 33 32 ) {.+#if (_WIN32
7190: 5f 57 49 4e 4e 54 20 3c 20 30 78 30 36 30 30 29 _WINNT < 0x0600)
71a0: 20 26 26 20 64 65 66 69 6e 65 64 28 57 49 4e 33 && defined(WIN3
71b0: 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 29 2_USE_TICKCOUNT)
71c0: 0a 2b 09 20 20 20 20 74 69 6d 65 6f 75 74 20 3d .+. timeout =
71d0: 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 20 2a 20 timePtr->sec *
71e0: 31 30 30 30 20 2b 20 74 69 6d 65 50 74 72 2d 3e 1000 + timePtr->
71f0: 75 73 65 63 20 2f 20 31 30 30 30 3b 0a 2b 09 20 usec / 1000;.+.
7200: 20 20 20 69 66 20 28 74 69 6d 65 6f 75 74 20 3d if (timeout =
7210: 3d 20 49 4e 46 49 4e 49 54 45 29 20 7b 0a 2b 09 = INFINITE) {.+.
7220: 09 74 69 6d 65 6f 75 74 2d 2d 3b 0a 2b 09 20 20 .timeout--;.+.
7230: 20 20 7d 20 0a 2b 23 65 6c 73 65 0a 20 09 20 20 } .+#else. .
7240: 20 20 2f 2a 0a 20 09 20 20 20 20 20 2a 20 54 49 /*. . * TI
7250: 50 20 23 32 33 33 20 28 56 69 72 74 75 61 6c 69 P #233 (Virtuali
7260: 7a 65 64 20 54 69 6d 65 29 2e 20 43 6f 6e 76 65 zed Time). Conve
7270: 72 74 20 76 69 72 74 75 61 6c 20 64 6f 6d 61 69 rt virtual domai
7280: 6e 20 64 65 6c 61 79 20 74 6f 0a 20 09 20 20 20 n delay to. .
7290: 20 20 2a 20 72 65 61 6c 2d 74 69 6d 65 2e 0a 40 * real-time..@
72a0: 40 20 2d 34 36 30 2c 36 20 2b 34 36 36 2c 37 20 @ -460,6 +466,7
72b0: 40 40 0a 20 09 20 20 20 20 7d 0a 20 0a 20 09 20 @@. . }. . .
72c0: 20 20 20 74 69 6d 65 6f 75 74 20 3d 20 6d 79 54 timeout = myT
72d0: 69 6d 65 2e 73 65 63 20 2a 20 31 30 30 30 20 2b ime.sec * 1000 +
72e0: 20 6d 79 54 69 6d 65 2e 75 73 65 63 20 2f 20 31 myTime.usec / 1
72f0: 30 30 30 3b 0a 2b 23 65 6e 64 69 66 0a 20 09 7d 000;.+#endif. .}
7300: 20 65 6c 73 65 20 7b 0a 20 09 20 20 20 20 74 69 else {. . ti
7310: 6d 65 6f 75 74 20 3d 20 49 4e 46 49 4e 49 54 45 meout = INFINITE
7320: 3b 0a 20 09 7d 0a 40 40 20 2d 35 34 38 2c 36 20 ;. .}.@@ -548,6
7330: 2b 35 35 35 2c 34 36 20 40 40 0a 20 54 63 6c 5f +555,46 @@. Tcl_
7340: 53 6c 65 65 70 28 0a 20 20 20 20 20 69 6e 74 20 Sleep(. int
7350: 6d 73 29 09 09 09 2f 2a 20 4e 75 6d 62 65 72 20 ms).../* Number
7360: 6f 66 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 of milliseconds
7370: 74 6f 20 73 6c 65 65 70 2e 20 2a 2f 0a 20 7b 0a to sleep. */. {.
7380: 2b 23 69 66 64 65 66 20 57 49 4e 33 32 5f 55 53 +#ifdef WIN32_US
7390: 45 5f 54 49 43 4b 43 4f 55 4e 54 0a 2b 23 69 66 E_TICKCOUNT.+#if
73a0: 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e (_WIN32_WINNT >
73b0: 3d 20 30 78 30 36 30 30 29 0a 2b 20 20 20 20 55 = 0x0600).+ U
73c0: 4c 4f 4e 47 4c 4f 4e 47 20 6e 6f 77 3b 09 09 2f LONGLONG now;../
73d0: 2a 20 43 75 72 72 65 6e 74 20 77 61 6c 6c 20 63 * Current wall c
73e0: 6c 6f 63 6b 20 74 69 6d 65 2e 20 2a 2f 0a 2b 20 lock time. */.+
73f0: 20 20 20 55 4c 4f 4e 47 4c 4f 4e 47 20 64 65 73 ULONGLONG des
7400: 69 72 65 64 3b 09 09 2f 2a 20 44 65 73 69 72 65 ired;../* Desire
7410: 64 20 77 61 6b 65 75 70 20 74 69 6d 65 2e 20 2a d wakeup time. *
7420: 2f 0a 2b 20 20 20 20 55 4c 4f 4e 47 4c 4f 4e 47 /.+ ULONGLONG
7430: 20 73 6c 65 65 70 54 69 6d 65 3b 0a 2b 0a 2b 20 sleepTime;.+.+
7440: 20 20 20 6e 6f 77 20 3d 20 47 65 74 54 69 63 6b now = GetTick
7450: 43 6f 75 6e 74 36 34 28 29 3b 0a 2b 23 65 6c 73 Count64();.+#els
7460: 65 0a 2b 20 20 20 20 44 57 4f 52 44 20 6e 6f 77 e.+ DWORD now
7470: 3b 09 09 09 2f 2a 20 43 75 72 72 65 6e 74 20 77 ;.../* Current w
7480: 61 6c 6c 20 63 6c 6f 63 6b 20 74 69 6d 65 2e 20 all clock time.
7490: 2a 2f 0a 2b 20 20 20 20 44 57 4f 52 44 20 64 65 */.+ DWORD de
74a0: 73 69 72 65 64 3b 09 09 2f 2a 20 44 65 73 69 72 sired;../* Desir
74b0: 65 64 20 77 61 6b 65 75 70 20 74 69 6d 65 2e 20 ed wakeup time.
74c0: 2a 2f 0a 2b 20 20 20 20 44 57 4f 52 44 20 73 6c */.+ DWORD sl
74d0: 65 65 70 54 69 6d 65 3b 0a 2b 0a 2b 20 20 20 20 eepTime;.+.+
74e0: 6e 6f 77 20 3d 20 47 65 74 54 69 63 6b 43 6f 75 now = GetTickCou
74f0: 6e 74 28 29 3b 0a 2b 23 65 6e 64 69 66 0a 2b 0a nt();.+#endif.+.
7500: 2b 20 20 20 20 69 66 20 28 6d 73 20 3c 20 30 29 + if (ms < 0)
7510: 20 7b 0a 2b 09 6d 73 20 3d 20 30 3b 0a 2b 23 69 {.+.ms = 0;.+#i
7520: 66 20 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 f (_WIN32_WINNT
7530: 3c 20 30 78 30 36 30 30 29 0a 2b 20 20 20 20 7d < 0x0600).+ }
7540: 20 65 6c 73 65 20 69 66 20 28 6d 73 20 3e 20 30 else if (ms > 0
7550: 78 37 46 46 46 46 46 46 46 29 20 7b 0a 2b 09 6d x7FFFFFFF) {.+.m
7560: 73 20 3d 20 30 78 37 46 46 46 46 46 46 46 3b 0a s = 0x7FFFFFFF;.
7570: 2b 23 65 6e 64 69 66 0a 2b 20 20 20 20 7d 0a 2b +#endif.+ }.+
7580: 20 20 20 20 64 65 73 69 72 65 64 20 3d 20 6e 6f desired = no
7590: 77 20 2b 20 6d 73 3b 0a 2b 20 20 20 20 73 6c 65 w + ms;.+ sle
75a0: 65 70 54 69 6d 65 20 3d 20 6d 73 3b 0a 2b 20 20 epTime = ms;.+
75b0: 20 20 66 6f 72 20 28 3b 3b 29 20 7b 0a 2b 09 53 for (;;) {.+.S
75c0: 6c 65 65 70 45 78 28 73 6c 65 65 70 54 69 6d 65 leepEx(sleepTime
75d0: 2c 20 54 52 55 45 29 3b 0a 2b 23 69 66 20 28 5f , TRUE);.+#if (_
75e0: 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 WIN32_WINNT >= 0
75f0: 78 30 36 30 30 29 0a 2b 09 6e 6f 77 20 3d 20 47 x0600).+.now = G
7600: 65 74 54 69 63 6b 43 6f 75 6e 74 36 34 28 29 3b etTickCount64();
7610: 0a 2b 09 69 66 20 28 6e 6f 77 20 2d 20 64 65 73 .+.if (now - des
7620: 69 72 65 64 20 3e 3d 20 30 29 20 7b 0a 2b 09 20 ired >= 0) {.+.
7630: 20 20 20 62 72 65 61 6b 3b 0a 2b 09 7d 0a 2b 23 break;.+.}.+#
7640: 65 6c 73 65 0a 2b 09 6e 6f 77 20 3d 20 47 65 74 else.+.now = Get
7650: 54 69 63 6b 43 6f 75 6e 74 28 29 3b 0a 2b 09 69 TickCount();.+.i
7660: 66 20 28 28 6c 6f 6e 67 29 20 6e 6f 77 20 2d 20 f ((long) now -
7670: 28 6c 6f 6e 67 29 20 64 65 73 69 72 65 64 20 3e (long) desired >
7680: 3d 20 30 29 20 7b 0a 2b 09 20 20 20 20 62 72 65 = 0) {.+. bre
7690: 61 6b 3b 0a 2b 09 7d 0a 2b 23 65 6e 64 69 66 0a ak;.+.}.+#endif.
76a0: 2b 09 73 6c 65 65 70 54 69 6d 65 20 3d 20 64 65 +.sleepTime = de
76b0: 73 69 72 65 64 20 2d 20 6e 6f 77 3b 0a 2b 20 20 sired - now;.+
76c0: 20 20 7d 0a 2b 23 65 6c 73 65 0a 20 20 20 20 20 }.+#else.
76d0: 2f 2a 0a 20 20 20 20 20 20 2a 20 53 69 6d 70 6c /*. * Simpl
76e0: 79 20 63 61 6c 6c 69 6e 67 20 27 53 6c 65 65 70 y calling 'Sleep
76f0: 27 20 66 6f 72 20 74 68 65 20 72 65 71 75 69 73 ' for the requis
7700: 69 74 65 20 6e 75 6d 62 65 72 20 6f 66 20 6d 69 ite number of mi
7710: 6c 6c 69 73 65 63 6f 6e 64 73 20 63 61 6e 0a 20 lliseconds can.
7720: 20 20 20 20 20 2a 20 6d 61 6b 65 20 74 68 65 20 * make the
7730: 70 72 6f 63 65 73 73 20 61 70 70 65 61 72 20 74 process appear t
7740: 6f 20 77 61 6b 65 20 75 70 20 65 61 72 6c 79 20 o wake up early
7750: 62 65 63 61 75 73 65 20 69 74 20 69 73 6e 27 74 because it isn't
7760: 20 73 79 6e 63 68 72 6f 6e 69 7a 65 64 0a 40 40 synchronized.@@
7770: 20 2d 35 39 37 2c 36 20 2b 36 34 34 2c 37 20 40 -597,6 +644,7 @
7780: 40 0a 20 09 74 63 6c 53 63 61 6c 65 54 69 6d 65 @. .tclScaleTime
7790: 50 72 6f 63 50 74 72 28 26 76 64 65 6c 61 79 2c ProcPtr(&vdelay,
77a0: 20 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 44 61 tclTimeClientDa
77b0: 74 61 29 3b 0a 20 09 73 6c 65 65 70 54 69 6d 65 ta);. .sleepTime
77c0: 20 3d 20 76 64 65 6c 61 79 2e 73 65 63 20 2a 20 = vdelay.sec *
77d0: 31 30 30 30 20 2b 20 76 64 65 6c 61 79 2e 75 73 1000 + vdelay.us
77e0: 65 63 20 2f 20 31 30 30 30 3b 0a 20 20 20 20 20 ec / 1000;.
77f0: 7d 0a 2b 23 65 6e 64 69 66 0a 20 7d 0a 20 0c 0a }.+#endif. }. ..
7800: 20 2f 2a 0a 64 69 66 66 20 2d 75 72 20 74 63 6c /*.diff -ur tcl
7810: 38 2e 36 2e 35 2d 6f 72 69 67 2f 77 69 6e 2f 74 8.6.5-orig/win/t
7820: 63 6c 57 69 6e 54 69 6d 65 2e 63 20 74 63 6c 38 clWinTime.c tcl8
7830: 2e 36 2e 35 2f 77 69 6e 2f 74 63 6c 57 69 6e 54 .6.5/win/tclWinT
7840: 69 6d 65 2e 63 0a 2d 2d 2d 20 74 63 6c 38 2e 36 ime.c.--- tcl8.6
7850: 2e 35 2d 6f 72 69 67 2f 77 69 6e 2f 74 63 6c 57 .5-orig/win/tclW
7860: 69 6e 54 69 6d 65 2e 63 09 32 30 31 36 2d 30 32 inTime.c.2016-02
7870: 2d 32 35 20 32 31 3a 31 32 3a 33 38 2e 30 30 30 -25 21:12:38.000
7880: 30 30 30 30 30 30 20 2b 30 31 30 30 0a 2b 2b 2b 000000 +0100.+++
7890: 20 74 63 6c 38 2e 36 2e 35 2f 77 69 6e 2f 74 63 tcl8.6.5/win/tc
78a0: 6c 57 69 6e 54 69 6d 65 2e 63 09 32 30 31 36 2d lWinTime.c.2016-
78b0: 30 33 2d 32 35 20 30 36 3a 35 30 3a 35 34 2e 36 03-25 06:50:54.6
78c0: 38 31 36 36 31 38 37 31 20 2b 30 31 30 30 0a 40 81661871 +0100.@
78d0: 40 20 2d 31 31 33 2c 37 20 2b 31 31 33 2c 37 20 @ -113,7 +113,7
78e0: 40 40 0a 20 20 2a 20 44 65 63 6c 61 72 61 74 69 @@. * Declarati
78f0: 6f 6e 73 20 66 6f 72 20 66 75 6e 63 74 69 6f 6e ons for function
7900: 73 20 64 65 66 69 6e 65 64 20 6c 61 74 65 72 20 s defined later
7910: 69 6e 20 74 68 69 73 20 66 69 6c 65 2e 0a 20 20 in this file..
7920: 2a 2f 0a 20 0a 2d 73 74 61 74 69 63 20 73 74 72 */. .-static str
7930: 75 63 74 20 74 6d 20 2a 09 43 6f 6d 70 75 74 65 uct tm *.Compute
7940: 47 4d 54 28 63 6f 6e 73 74 20 74 69 6d 65 5f 74 GMT(const time_t
7950: 20 2a 74 70 29 3b 0a 2b 23 69 66 6e 64 65 66 20 *tp);.+#ifndef
7960: 57 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f WIN32_USE_TICKCO
7970: 55 4e 54 0a 20 73 74 61 74 69 63 20 76 6f 69 64 UNT. static void
7980: 09 09 53 74 6f 70 43 61 6c 69 62 72 61 74 69 6f ..StopCalibratio
7990: 6e 28 43 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 n(ClientData cli
79a0: 65 6e 74 44 61 74 61 29 3b 0a 20 73 74 61 74 69 entData);. stati
79b0: 63 20 44 57 4f 52 44 20 57 49 4e 41 50 49 09 43 c DWORD WINAPI.C
79c0: 61 6c 69 62 72 61 74 69 6f 6e 54 68 72 65 61 64 alibrationThread
79d0: 28 4c 50 56 4f 49 44 20 61 72 67 29 3b 0a 20 73 (LPVOID arg);. s
79e0: 74 61 74 69 63 20 76 6f 69 64 20 09 09 55 70 64 tatic void ..Upd
79f0: 61 74 65 54 69 6d 65 45 61 63 68 53 65 63 6f 6e ateTimeEachSecon
7a00: 64 28 76 6f 69 64 29 3b 0a 40 40 20 2d 31 32 31 d(void);.@@ -121
7a10: 2c 36 20 2b 31 32 31 2c 37 20 40 40 0a 20 09 09 ,6 +121,7 @@. ..
7a20: 09 20 20 20 20 54 63 6c 5f 57 69 64 65 49 6e 74 . Tcl_WideInt
7a30: 20 70 65 72 66 43 6f 75 6e 74 65 72 2c 20 54 63 perfCounter, Tc
7a40: 6c 5f 57 69 64 65 49 6e 74 20 70 65 72 66 46 72 l_WideInt perfFr
7a50: 65 71 29 3b 0a 20 73 74 61 74 69 63 20 54 63 6c eq);. static Tcl
7a60: 5f 57 69 64 65 49 6e 74 09 41 63 63 75 6d 75 6c _WideInt.Accumul
7a70: 61 74 65 53 61 6d 70 6c 65 28 54 63 6c 5f 57 69 ateSample(Tcl_Wi
7a80: 64 65 49 6e 74 20 70 65 72 66 43 6f 75 6e 74 65 deInt perfCounte
7a90: 72 2c 0a 20 09 09 09 20 20 20 20 54 63 6c 5f 57 r,. ... Tcl_W
7aa0: 69 64 65 55 49 6e 74 20 66 69 6c 65 54 69 6d 65 ideUInt fileTime
7ab0: 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 73 74 61 74 );.+#endif. stat
7ac0: 69 63 20 76 6f 69 64 09 09 4e 61 74 69 76 65 53 ic void..NativeS
7ad0: 63 61 6c 65 54 69 6d 65 28 54 63 6c 5f 54 69 6d caleTime(Tcl_Tim
7ae0: 65 2a 20 74 69 6d 65 62 75 66 2c 0a 20 09 09 09 e* timebuf,. ...
7af0: 20 20 20 20 43 6c 69 65 6e 74 44 61 74 61 20 63 ClientData c
7b00: 6c 69 65 6e 74 44 61 74 61 29 3b 0a 20 73 74 61 lientData);. sta
7b10: 74 69 63 20 76 6f 69 64 09 09 4e 61 74 69 76 65 tic void..Native
7b20: 47 65 74 54 69 6d 65 28 54 63 6c 5f 54 69 6d 65 GetTime(Tcl_Time
7b30: 2a 20 74 69 6d 65 62 75 66 2c 0a 40 40 20 2d 32 * timebuf,.@@ -2
7b40: 39 34 2c 36 20 2b 32 39 35 2c 39 20 40 40 0a 20 94,6 +295,9 @@.
7b50: 20 20 20 20 69 66 20 28 21 74 69 6d 65 49 6e 66 if (!timeInf
7b60: 6f 2e 69 6e 69 74 69 61 6c 69 7a 65 64 29 20 7b o.initialized) {
7b70: 0a 20 09 54 63 6c 70 49 6e 69 74 4c 6f 63 6b 28 . .TclpInitLock(
7b80: 29 3b 0a 20 09 69 66 20 28 21 74 69 6d 65 49 6e );. .if (!timeIn
7b90: 66 6f 2e 69 6e 69 74 69 61 6c 69 7a 65 64 29 20 fo.initialized)
7ba0: 7b 0a 2b 23 69 66 64 65 66 20 57 49 4e 33 32 5f {.+#ifdef WIN32_
7bb0: 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 0a 2b 09 USE_TICKCOUNT.+.
7bc0: 20 20 20 20 74 69 6d 65 49 6e 66 6f 2e 70 65 72 timeInfo.per
7bd0: 66 43 6f 75 6e 74 65 72 41 76 61 69 6c 61 62 6c fCounterAvailabl
7be0: 65 20 3d 20 30 3b 0a 2b 23 65 6c 73 65 0a 20 09 e = 0;.+#else. .
7bf0: 20 20 20 20 74 69 6d 65 49 6e 66 6f 2e 70 65 72 timeInfo.per
7c00: 66 43 6f 75 6e 74 65 72 41 76 61 69 6c 61 62 6c fCounterAvailabl
7c10: 65 20 3d 0a 20 09 09 20 20 20 20 51 75 65 72 79 e =. .. Query
7c20: 50 65 72 66 6f 72 6d 61 6e 63 65 46 72 65 71 75 PerformanceFrequ
7c30: 65 6e 63 79 28 26 74 69 6d 65 49 6e 66 6f 2e 6e ency(&timeInfo.n
7c40: 6f 6d 69 6e 61 6c 46 72 65 71 29 3b 0a 20 0a 40 ominalFreq);. .@
7c50: 40 20 2d 33 38 37 2c 36 20 2b 33 39 31 2c 37 20 @ -387,6 +391,7
7c60: 40 40 0a 20 09 09 43 6c 6f 73 65 48 61 6e 64 6c @@. ..CloseHandl
7c70: 65 28 74 69 6d 65 49 6e 66 6f 2e 72 65 61 64 79 e(timeInfo.ready
7c80: 45 76 65 6e 74 29 3b 0a 20 09 09 54 63 6c 5f 43 Event);. ..Tcl_C
7c90: 72 65 61 74 65 45 78 69 74 48 61 6e 64 6c 65 72 reateExitHandler
7ca0: 28 53 74 6f 70 43 61 6c 69 62 72 61 74 69 6f 6e (StopCalibration
7cb0: 2c 20 4e 55 4c 4c 29 3b 0a 20 09 20 20 20 20 7d , NULL);. . }
7cc0: 0a 2b 23 65 6e 64 69 66 20 2f 2a 20 21 57 49 4e .+#endif /* !WIN
7cd0: 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 32_USE_TICKCOUNT
7ce0: 20 2a 2f 0a 20 09 20 20 20 20 74 69 6d 65 49 6e */. . timeIn
7cf0: 66 6f 2e 69 6e 69 74 69 61 6c 69 7a 65 64 20 3d fo.initialized =
7d00: 20 54 52 55 45 3b 0a 20 09 7d 0a 20 09 54 63 6c TRUE;. .}. .Tcl
7d10: 70 49 6e 69 74 55 6e 6c 6f 63 6b 28 29 3b 0a 40 pInitUnlock();.@
7d20: 40 20 2d 34 35 32 2c 36 20 2b 34 35 37 2c 37 20 @ -452,6 +457,7
7d30: 40 40 0a 20 20 20 20 20 7d 0a 20 7d 0a 20 0c 0a @@. }. }. ..
7d40: 2b 23 69 66 6e 64 65 66 20 57 49 4e 33 32 5f 55 +#ifndef WIN32_U
7d50: 53 45 5f 54 49 43 4b 43 4f 55 4e 54 0a 20 2f 2a SE_TICKCOUNT. /*
7d60: 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d . *------------
7d70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7d80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7d90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7da0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 40 ----------. *.@
7db0: 40 20 2d 34 38 35 2c 36 20 2b 34 39 31 2c 37 20 @ -485,6 +491,7
7dc0: 40 40 0a 20 20 20 20 20 43 6c 6f 73 65 48 61 6e @@. CloseHan
7dd0: 64 6c 65 28 74 69 6d 65 49 6e 66 6f 2e 65 78 69 dle(timeInfo.exi
7de0: 74 45 76 65 6e 74 29 3b 0a 20 20 20 20 20 43 6c tEvent);. Cl
7df0: 6f 73 65 48 61 6e 64 6c 65 28 74 69 6d 65 49 6e oseHandle(timeIn
7e00: 66 6f 2e 63 61 6c 69 62 72 61 74 69 6f 6e 54 68 fo.calibrationTh
7e10: 72 65 61 64 29 3b 0a 20 7d 0a 2b 23 65 6e 64 69 read);. }.+#endi
7e20: 66 20 2f 2a 20 21 57 49 4e 33 32 5f 55 53 45 5f f /* !WIN32_USE_
7e30: 54 49 43 4b 43 4f 55 4e 54 20 2a 2f 0a 20 0c 0a TICKCOUNT */. ..
7e40: 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d /*. *---------
7e50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7e60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7e70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7e80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 40 40 -------------.@@
7e90: 20 2d 37 30 37 2c 36 20 2b 37 31 34 2c 37 20 40 -707,6 +714,7 @
7ea0: 40 0a 20 20 20 20 20 72 65 74 75 72 6e 20 74 6d @. return tm
7eb0: 50 74 72 3b 0a 20 7d 0a 20 0c 0a 2b 23 69 66 6e Ptr;. }. ..+#ifn
7ec0: 64 65 66 20 57 49 4e 33 32 5f 55 53 45 5f 54 49 def WIN32_USE_TI
7ed0: 43 4b 43 4f 55 4e 54 0a 20 2f 2a 0a 20 20 2a 2d CKCOUNT. /*. *-
7ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7ef0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7f00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7f10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7f20: 2d 2d 2d 2d 2d 0a 20 20 2a 0a 40 40 20 2d 31 30 -----. *.@@ -10
7f30: 33 33 2c 36 20 2b 31 30 34 31 2c 37 20 40 40 0a 33,6 +1041,7 @@.
7f40: 20 09 72 65 74 75 72 6e 20 65 73 74 46 72 65 71 .return estFreq
7f50: 3b 0a 20 20 20 20 20 7d 0a 20 7d 0a 2b 23 65 6e ;. }. }.+#en
7f60: 64 69 66 20 2f 2a 20 21 57 49 4e 33 32 5f 55 53 dif /* !WIN32_US
7f70: 45 5f 54 49 43 4b 43 4f 55 4e 54 20 2a 2f 0a 20 E_TICKCOUNT */.
7f80: 0c 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d .. /*. *-------
7f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7fb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7fc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
7fd0: 40 40 20 2d 31 31 31 38 2c 39 20 2b 31 31 32 37 @@ -1118,9 +1127
7fe0: 2c 31 31 20 40 40 0a 20 20 20 20 20 54 63 6c 5f ,11 @@. Tcl_
7ff0: 53 63 61 6c 65 54 69 6d 65 50 72 6f 63 20 2a 73 ScaleTimeProc *s
8000: 63 61 6c 65 50 72 6f 63 2c 0a 20 20 20 20 20 43 caleProc,. C
8010: 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 lientData client
8020: 44 61 74 61 29 0a 20 7b 0a 2b 23 69 66 20 21 64 Data). {.+#if !d
8030: 65 66 69 6e 65 64 28 57 49 4e 33 32 5f 55 53 45 efined(WIN32_USE
8040: 5f 54 49 43 4b 43 4f 55 4e 54 29 20 7c 7c 20 28 _TICKCOUNT) || (
8050: 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 _WIN32_WINNT >=
8060: 30 78 30 36 30 30 29 0a 20 20 20 20 20 74 63 6c 0x0600). tcl
8070: 47 65 74 54 69 6d 65 50 72 6f 63 50 74 72 20 3d GetTimeProcPtr =
8080: 20 67 65 74 50 72 6f 63 3b 0a 20 20 20 20 20 74 getProc;. t
8090: 63 6c 53 63 61 6c 65 54 69 6d 65 50 72 6f 63 50 clScaleTimeProcP
80a0: 74 72 20 3d 20 73 63 61 6c 65 50 72 6f 63 3b 0a tr = scaleProc;.
80b0: 20 20 20 20 20 74 63 6c 54 69 6d 65 43 6c 69 65 tclTimeClie
80c0: 6e 74 44 61 74 61 20 3d 20 63 6c 69 65 6e 74 44 ntData = clientD
80d0: 61 74 61 3b 0a 2b 23 65 6e 64 69 66 0a 20 7d 0a ata;.+#endif. }.
80e0: 20 0c 0a 20 2f 2a 0a .. /*.