Tcl Source Code

Hex Artifact Content
Login

Artifact fe90054dee32ee1485ce946bd23c1d0ac2e9522a:

Attachment "tip302.patch" to ticket [3328635fff] added by chw 2016-03-25 08:05:54. (unpublished)
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  &notifierMutex, 
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, &not
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  &notifierMutex);
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, &notifier
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                              .. /*.