Attachment "atip302.diff" to
ticket [3328635fff]
added by
chw
2016-09-25 18:59:51.
0000: 63 68 65 63 6b 6f 75 74 3a 20 20 20 20 20 35 37 checkout: 57
0010: 32 66 64 33 31 32 36 38 31 33 32 38 66 66 31 63 2fd312681328ff1c
0020: 32 61 66 63 31 66 31 65 33 65 35 33 34 64 62 62 2afc1f1e3e534dbb
0030: 62 63 66 62 35 66 20 32 30 31 36 2d 30 39 2d 32 bcfb5f 2016-09-2
0040: 31 20 30 39 3a 32 30 3a 35 34 20 55 54 43 0a 70 1 09:20:54 UTC.p
0050: 61 72 65 6e 74 3a 20 20 20 20 20 20 20 38 39 32 arent: 892
0060: 34 39 39 32 35 32 32 65 62 35 34 30 39 35 65 35 4992522eb54095e5
0070: 35 33 32 37 66 64 62 64 35 31 33 33 63 62 32 32 5327fdbd5133cb22
0080: 36 30 32 30 66 20 32 30 31 36 2d 30 39 2d 31 36 6020f 2016-09-16
0090: 20 30 39 3a 30 36 3a 34 31 20 55 54 43 0a 6d 65 09:06:41 UTC.me
00a0: 72 67 65 64 2d 66 72 6f 6d 3a 20 20 61 32 36 30 rged-from: a260
00b0: 36 37 62 32 35 32 63 62 31 32 33 61 32 33 30 63 67b252cb123a230c
00c0: 34 32 38 36 33 35 37 35 30 30 30 31 61 62 32 32 428635750001ab22
00d0: 39 65 65 61 20 32 30 31 36 2d 30 39 2d 32 31 20 9eea 2016-09-21
00e0: 30 39 3a 31 35 3a 33 34 20 55 54 43 0a 6d 65 72 09:15:34 UTC.mer
00f0: 67 65 64 2d 69 6e 74 6f 3a 20 20 64 32 32 64 32 ged-into: d22d2
0100: 66 63 35 62 65 39 30 34 66 61 64 38 36 30 66 31 fc5be904fad860f1
0110: 38 38 66 30 35 65 32 61 61 34 31 33 35 64 32 65 88f05e2aa4135d2e
0120: 31 66 35 20 32 30 31 36 2d 30 39 2d 32 31 20 30 1f5 2016-09-21 0
0130: 39 3a 33 36 3a 33 35 20 55 54 43 0a 6d 65 72 67 9:36:35 UTC.merg
0140: 65 64 2d 69 6e 74 6f 3a 20 20 38 61 63 39 61 36 ed-into: 8ac9a6
0150: 39 62 35 31 37 32 36 66 33 65 33 66 37 31 64 31 9b51726f3e3f71d1
0160: 32 64 32 32 64 63 34 65 65 33 63 63 62 63 34 62 2d22dc4ee3ccbc4b
0170: 39 64 20 32 30 31 36 2d 30 39 2d 32 31 20 30 39 9d 2016-09-21 09
0180: 3a 32 38 3a 33 39 20 55 54 43 0a 6c 65 61 66 3a :28:39 UTC.leaf:
0190: 20 20 20 20 20 20 20 20 20 6f 70 65 6e 0a 74 61 open.ta
01a0: 67 73 3a 20 20 20 20 20 20 20 20 20 63 6f 72 65 gs: core
01b0: 2d 38 2d 36 2d 62 72 61 6e 63 68 0a 63 6f 6d 6d -8-6-branch.comm
01c0: 65 6e 74 3a 20 20 20 20 20 20 4d 61 6b 65 20 69 ent: Make i
01d0: 74 20 6d 6f 72 65 20 6c 69 6b 65 6c 79 20 74 68 t more likely th
01e0: 61 74 20 63 6f 6d 70 69 6c 65 73 20 77 69 74 68 at compiles with
01f0: 20 56 53 32 30 31 32 2f 56 53 32 30 31 33 20 61 VS2012/VS2013 a
0200: 63 74 75 61 6c 6c 79 0a 20 20 20 20 20 20 20 20 ctually.
0210: 20 20 20 20 20 20 77 6f 72 6b 20 6f 6e 20 57 69 work on Wi
0220: 6e 64 6f 77 73 20 58 50 2e 20 53 65 65 3a 0a 20 ndows XP. See:.
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 5b 68 74 [ht
0240: 74 70 73 3a 2f 2f 74 65 64 77 76 63 2e 77 6f 72 tps://tedwvc.wor
0250: 64 70 72 65 73 73 2e 63 6f 6d 2f 32 30 31 34 2f dpress.com/2014/
0260: 30 31 2f 30 31 2f 68 6f 77 2d 74 6f 2d 74 61 72 01/01/how-to-tar
0270: 67 65 74 2d 78 70 2d 77 69 74 68 2d 0a 20 20 20 get-xp-with-.
0280: 20 20 20 20 20 20 20 20 20 20 20 76 63 32 30 31 vc201
0290: 32 2d 6f 72 2d 76 63 32 30 31 33 2d 61 6e 64 2d 2-or-vc2013-and-
02a0: 63 6f 6e 74 69 6e 75 65 2d 74 6f 2d 75 73 65 2d continue-to-use-
02b0: 74 68 65 2d 77 69 6e 64 6f 77 73 2d 38 2d 78 2d the-windows-8-x-
02c0: 73 64 6b 2f 5d 0a 20 20 20 20 20 20 20 20 20 20 sdk/].
02d0: 20 20 20 20 28 75 73 65 72 3a 20 6a 61 6e 2e 6e (user: jan.n
02e0: 69 6a 74 6d 61 6e 73 29 0a 0a 0a 49 6e 64 65 78 ijtmans)...Index
02f0: 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d 64 : generic/tclCmd
0300: 4d 5a 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d MZ.c.===========
0310: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0320: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0330: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0340: 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 67 65 6e 65 =======.--- gene
0350: 72 69 63 2f 74 63 6c 43 6d 64 4d 5a 2e 63 0a 2b ric/tclCmdMZ.c.+
0360: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 43 6d ++ generic/tclCm
0370: 64 4d 5a 2e 63 0a 40 40 20 2d 34 31 33 39 2c 31 dMZ.c.@@ -4139,1
0380: 31 20 2b 34 31 33 39 2c 31 31 20 40 40 0a 20 20 1 +4139,11 @@.
0390: 20 20 20 7d 0a 20 0a 20 20 20 20 20 6f 62 6a 50 }. . objP
03a0: 74 72 20 3d 20 6f 62 6a 76 5b 31 5d 3b 0a 20 20 tr = objv[1];.
03b0: 20 20 20 69 20 3d 20 63 6f 75 6e 74 3b 0a 20 23 i = count;. #
03c0: 69 66 6e 64 65 66 20 54 43 4c 5f 57 49 44 45 5f ifndef TCL_WIDE_
03d0: 43 4c 49 43 4b 53 0a 2d 20 20 20 20 54 63 6c 5f CLICKS.- Tcl_
03e0: 47 65 74 54 69 6d 65 28 26 73 74 61 72 74 29 3b GetTime(&start);
03f0: 0a 2b 20 20 20 20 54 63 6c 70 47 65 74 4d 6f 6e .+ TclpGetMon
0400: 6f 74 6f 6e 69 63 54 69 6d 65 28 26 73 74 61 72 otonicTime(&star
0410: 74 29 3b 0a 20 23 65 6c 73 65 0a 20 20 20 20 20 t);. #else.
0420: 73 74 61 72 74 20 3d 20 54 63 6c 70 47 65 74 57 start = TclpGetW
0430: 69 64 65 43 6c 69 63 6b 73 28 29 3b 0a 20 23 65 ideClicks();. #e
0440: 6e 64 69 66 0a 20 20 20 20 20 77 68 69 6c 65 20 ndif. while
0450: 28 69 2d 2d 20 3e 20 30 29 20 7b 0a 20 09 72 65 (i-- > 0) {. .re
0460: 73 75 6c 74 20 3d 20 54 63 6c 5f 45 76 61 6c 4f sult = Tcl_EvalO
0470: 62 6a 45 78 28 69 6e 74 65 72 70 2c 20 6f 62 6a bjEx(interp, obj
0480: 50 74 72 2c 20 30 29 3b 0a 40 40 20 2d 34 31 35 Ptr, 0);.@@ -415
0490: 30 2c 31 31 20 2b 34 31 35 30 2c 31 31 20 40 40 0,11 +4150,11 @@
04a0: 0a 20 09 69 66 20 28 72 65 73 75 6c 74 20 21 3d . .if (result !=
04b0: 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 09 20 20 20 TCL_OK) {. .
04c0: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a return result;.
04d0: 20 09 7d 0a 20 20 20 20 20 7d 0a 20 23 69 66 6e .}. }. #ifn
04e0: 64 65 66 20 54 43 4c 5f 57 49 44 45 5f 43 4c 49 def TCL_WIDE_CLI
04f0: 43 4b 53 0a 2d 20 20 20 20 54 63 6c 5f 47 65 74 CKS.- Tcl_Get
0500: 54 69 6d 65 28 26 73 74 6f 70 29 3b 0a 2b 20 20 Time(&stop);.+
0510: 20 20 54 63 6c 70 47 65 74 4d 6f 6e 6f 74 6f 6e TclpGetMonoton
0520: 69 63 54 69 6d 65 28 26 73 74 6f 70 29 3b 0a 20 icTime(&stop);.
0530: 20 20 20 20 74 6f 74 61 6c 4d 69 63 72 6f 53 65 totalMicroSe
0540: 63 20 3d 20 28 28 64 6f 75 62 6c 65 29 20 28 73 c = ((double) (s
0550: 74 6f 70 2e 73 65 63 20 2d 20 73 74 61 72 74 2e top.sec - start.
0560: 73 65 63 29 29 20 2a 20 31 2e 30 65 36 0a 20 09 sec)) * 1.0e6. .
0570: 20 20 20 20 2b 20 28 73 74 6f 70 2e 75 73 65 63 + (stop.usec
0580: 20 2d 20 73 74 61 72 74 2e 75 73 65 63 29 3b 0a - start.usec);.
0590: 20 23 65 6c 73 65 0a 20 20 20 20 20 73 74 6f 70 #else. stop
05a0: 20 3d 20 54 63 6c 70 47 65 74 57 69 64 65 43 6c = TclpGetWideCl
05b0: 69 63 6b 73 28 29 3b 0a 20 20 20 20 20 74 6f 74 icks();. tot
05c0: 61 6c 4d 69 63 72 6f 53 65 63 20 3d 20 28 28 64 alMicroSec = ((d
05d0: 6f 75 62 6c 65 29 20 54 63 6c 70 57 69 64 65 43 ouble) TclpWideC
05e0: 6c 69 63 6b 73 54 6f 4e 61 6e 6f 73 65 63 6f 6e licksToNanosecon
05f0: 64 73 28 73 74 6f 70 20 2d 20 73 74 61 72 74 29 ds(stop - start)
0600: 29 2f 31 2e 30 65 33 3b 0a 0a 49 6e 64 65 78 3a )/1.0e3;..Index:
0610: 20 67 65 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e generic/tclInt.
0620: 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d h.==============
0630: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0640: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0650: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0660: 3d 3d 3d 3d 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 ====.--- generic
0670: 2f 74 63 6c 49 6e 74 2e 68 0a 2b 2b 2b 20 67 65 /tclInt.h.+++ ge
0680: 6e 65 72 69 63 2f 74 63 6c 49 6e 74 2e 68 0a 40 neric/tclInt.h.@
0690: 40 20 2d 33 31 35 39 2c 31 30 20 2b 33 31 35 39 @ -3159,10 +3159
06a0: 2c 31 31 20 40 40 0a 20 4d 4f 44 55 4c 45 5f 53 ,11 @@. MODULE_S
06b0: 43 4f 50 45 20 76 6f 69 64 09 54 63 6c 70 54 68 COPE void.TclpTh
06c0: 72 65 61 64 44 65 6c 65 74 65 4b 65 79 28 76 6f readDeleteKey(vo
06d0: 69 64 20 2a 6b 65 79 50 74 72 29 3b 0a 20 4d 4f id *keyPtr);. MO
06e0: 44 55 4c 45 5f 53 43 4f 50 45 20 76 6f 69 64 09 DULE_SCOPE void.
06f0: 54 63 6c 70 54 68 72 65 61 64 53 65 74 4d 61 73 TclpThreadSetMas
0700: 74 65 72 54 53 44 28 76 6f 69 64 20 2a 74 73 64 terTSD(void *tsd
0710: 4b 65 79 50 74 72 2c 20 76 6f 69 64 20 2a 70 74 KeyPtr, void *pt
0720: 72 29 3b 0a 20 4d 4f 44 55 4c 45 5f 53 43 4f 50 r);. MODULE_SCOP
0730: 45 20 76 6f 69 64 20 2a 09 54 63 6c 70 54 68 72 E void *.TclpThr
0740: 65 61 64 47 65 74 4d 61 73 74 65 72 54 53 44 28 eadGetMasterTSD(
0750: 76 6f 69 64 20 2a 74 73 64 4b 65 79 50 74 72 29 void *tsdKeyPtr)
0760: 3b 0a 20 0a 20 4d 4f 44 55 4c 45 5f 53 43 4f 50 ;. . MODULE_SCOP
0770: 45 20 76 6f 69 64 09 54 63 6c 45 72 72 6f 72 53 E void.TclErrorS
0780: 74 61 63 6b 52 65 73 65 74 49 66 28 54 63 6c 5f tackResetIf(Tcl_
0790: 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 2c 20 Interp *interp,
07a0: 63 6f 6e 73 74 20 63 68 61 72 20 2a 6d 73 67 2c const char *msg,
07b0: 20 69 6e 74 20 6c 65 6e 67 74 68 29 3b 0a 2b 4d int length);.+M
07c0: 4f 44 55 4c 45 5f 53 43 4f 50 45 20 69 6e 74 09 ODULE_SCOPE int.
07d0: 54 63 6c 70 47 65 74 4d 6f 6e 6f 74 6f 6e 69 63 TclpGetMonotonic
07e0: 54 69 6d 65 28 54 63 6c 5f 54 69 6d 65 20 2a 74 Time(Tcl_Time *t
07f0: 69 6d 65 50 74 72 29 3b 0a 20 0a 20 2f 2a 0a 20 imePtr);. . /*.
0800: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *--------------
0810: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0820: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0830: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0840: 2d 2d 0a 20 20 2a 20 43 6f 6d 6d 61 6e 64 20 70 --. * Command p
0850: 72 6f 63 65 64 75 72 65 73 20 69 6e 20 74 68 65 rocedures in the
0860: 20 67 65 6e 65 72 69 63 20 63 6f 72 65 3a 0a 20 generic core:.
0870: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *--------------
0880: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
0890: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
08a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
08b0: 2d 2d 0a 0a 49 6e 64 65 78 3a 20 67 65 6e 65 72 --..Index: gener
08c0: 69 63 2f 74 63 6c 49 6e 74 65 72 70 2e 63 0a 3d ic/tclInterp.c.=
08d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
08e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
08f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0910: 3d 0a 2d 2d 2d 20 67 65 6e 65 72 69 63 2f 74 63 =.--- generic/tc
0920: 6c 49 6e 74 65 72 70 2e 63 0a 2b 2b 2b 20 67 65 lInterp.c.+++ ge
0930: 6e 65 72 69 63 2f 74 63 6c 49 6e 74 65 72 70 2e neric/tclInterp.
0940: 63 0a 40 40 20 2d 33 33 39 31 2c 31 31 20 2b 33 c.@@ -3391,11 +3
0950: 33 39 31 2c 31 31 20 40 40 0a 20 20 20 20 20 69 391,11 @@. i
0960: 66 20 28 28 69 50 74 72 2d 3e 6c 69 6d 69 74 2e f ((iPtr->limit.
0970: 61 63 74 69 76 65 20 26 20 54 43 4c 5f 4c 49 4d active & TCL_LIM
0980: 49 54 5f 54 49 4d 45 29 20 26 26 0a 20 09 20 20 IT_TIME) &&. .
0990: 20 20 28 28 69 50 74 72 2d 3e 6c 69 6d 69 74 2e ((iPtr->limit.
09a0: 74 69 6d 65 47 72 61 6e 75 6c 61 72 69 74 79 20 timeGranularity
09b0: 3d 3d 20 31 29 20 7c 7c 0a 20 09 09 28 74 69 63 == 1) ||. ..(tic
09c0: 6b 65 72 20 25 20 69 50 74 72 2d 3e 6c 69 6d 69 ker % iPtr->limi
09d0: 74 2e 74 69 6d 65 47 72 61 6e 75 6c 61 72 69 74 t.timeGranularit
09e0: 79 20 3d 3d 20 30 29 29 29 20 7b 0a 20 09 54 63 y == 0))) {. .Tc
09f0: 6c 5f 54 69 6d 65 20 6e 6f 77 3b 0a 20 0a 2d 09 l_Time now;. .-.
0a00: 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 6e 6f 77 Tcl_GetTime(&now
0a10: 29 3b 0a 2b 09 54 63 6c 70 47 65 74 4d 6f 6e 6f );.+.TclpGetMono
0a20: 74 6f 6e 69 63 54 69 6d 65 28 26 6e 6f 77 29 3b tonicTime(&now);
0a30: 0a 20 09 69 66 20 28 69 50 74 72 2d 3e 6c 69 6d . .if (iPtr->lim
0a40: 69 74 2e 74 69 6d 65 2e 73 65 63 20 3c 20 6e 6f it.time.sec < no
0a50: 77 2e 73 65 63 20 7c 7c 0a 20 09 09 28 69 50 74 w.sec ||. ..(iPt
0a60: 72 2d 3e 6c 69 6d 69 74 2e 74 69 6d 65 2e 73 65 r->limit.time.se
0a70: 63 20 3d 3d 20 6e 6f 77 2e 73 65 63 20 26 26 0a c == now.sec &&.
0a80: 20 09 09 69 50 74 72 2d 3e 6c 69 6d 69 74 2e 74 ..iPtr->limit.t
0a90: 69 6d 65 2e 75 73 65 63 20 3c 20 6e 6f 77 2e 75 ime.usec < now.u
0aa0: 73 65 63 29 29 20 7b 0a 20 09 20 20 20 20 69 50 sec)) {. . iP
0ab0: 74 72 2d 3e 6c 69 6d 69 74 2e 65 78 63 65 65 64 tr->limit.exceed
0ac0: 65 64 20 7c 3d 20 54 43 4c 5f 4c 49 4d 49 54 5f ed |= TCL_LIMIT_
0ad0: 54 49 4d 45 3b 0a 20 09 20 20 20 20 54 63 6c 5f TIME;. . Tcl_
0ae0: 50 72 65 73 65 72 76 65 28 69 6e 74 65 72 70 29 Preserve(interp)
0af0: 3b 0a 40 40 20 2d 33 39 34 36 2c 31 31 20 2b 33 ;.@@ -3946,11 +3
0b00: 39 34 36 2c 32 39 20 40 40 0a 20 54 63 6c 5f 4c 946,29 @@. Tcl_L
0b10: 69 6d 69 74 53 65 74 54 69 6d 65 28 0a 20 20 20 imitSetTime(.
0b20: 20 20 54 63 6c 5f 49 6e 74 65 72 70 20 2a 69 6e Tcl_Interp *in
0b30: 74 65 72 70 2c 0a 20 20 20 20 20 54 63 6c 5f 54 terp,. Tcl_T
0b40: 69 6d 65 20 2a 74 69 6d 65 4c 69 6d 69 74 50 74 ime *timeLimitPt
0b50: 72 29 0a 20 7b 0a 20 20 20 20 20 49 6e 74 65 72 r). {. Inter
0b60: 70 20 2a 69 50 74 72 20 3d 20 28 49 6e 74 65 72 p *iPtr = (Inter
0b70: 70 20 2a 29 20 69 6e 74 65 72 70 3b 0a 2d 20 20 p *) interp;.-
0b80: 20 20 54 63 6c 5f 54 69 6d 65 20 6e 65 78 74 4d Tcl_Time nextM
0b90: 6f 6d 65 6e 74 3b 0a 2b 20 20 20 20 54 63 6c 5f oment;.+ Tcl_
0ba0: 54 69 6d 65 20 6e 65 78 74 4d 6f 6d 65 6e 74 2c Time nextMoment,
0bb0: 20 6d 6f 6e 6f 2c 20 72 65 61 6c 2c 20 6c 69 6d mono, real, lim
0bc0: 69 74 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 28 54 it;.+.+ if (T
0bd0: 63 6c 70 47 65 74 4d 6f 6e 6f 74 6f 6e 69 63 54 clpGetMonotonicT
0be0: 69 6d 65 28 26 6d 6f 6e 6f 29 29 20 7b 0a 2b 09 ime(&mono)) {.+.
0bf0: 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 72 65 61 Tcl_GetTime(&rea
0c00: 6c 29 3b 0a 2b 09 6c 69 6d 69 74 20 3d 20 2a 74 l);.+.limit = *t
0c10: 69 6d 65 4c 69 6d 69 74 50 74 72 3b 0a 2b 09 6c imeLimitPtr;.+.l
0c20: 69 6d 69 74 2e 73 65 63 20 2d 3d 20 72 65 61 6c imit.sec -= real
0c30: 2e 73 65 63 3b 0a 2b 09 6c 69 6d 69 74 2e 75 73 .sec;.+.limit.us
0c40: 65 63 20 2d 3d 20 72 65 61 6c 2e 75 73 65 63 3b ec -= real.usec;
0c50: 0a 2b 09 69 66 20 28 6c 69 6d 69 74 2e 75 73 65 .+.if (limit.use
0c60: 63 20 3c 20 30 29 20 7b 0a 2b 09 20 20 20 20 6c c < 0) {.+. l
0c70: 69 6d 69 74 2e 73 65 63 20 2d 3d 20 31 3b 0a 2b imit.sec -= 1;.+
0c80: 09 20 20 20 20 6c 69 6d 69 74 2e 75 73 65 63 20 . limit.usec
0c90: 2b 3d 20 31 30 30 30 30 30 30 3b 0a 2b 09 7d 0a += 1000000;.+.}.
0ca0: 2b 09 6c 69 6d 69 74 2e 73 65 63 20 2b 3d 20 6d +.limit.sec += m
0cb0: 6f 6e 6f 2e 73 65 63 3b 0a 2b 09 6c 69 6d 69 74 ono.sec;.+.limit
0cc0: 2e 75 73 65 63 20 2b 3d 20 6d 6f 6e 6f 2e 75 73 .usec += mono.us
0cd0: 65 63 3b 0a 2b 09 69 66 20 28 6c 69 6d 69 74 2e ec;.+.if (limit.
0ce0: 75 73 65 63 20 3e 3d 20 31 30 30 30 30 30 30 29 usec >= 1000000)
0cf0: 20 7b 0a 2b 09 20 20 20 20 6c 69 6d 69 74 2e 73 {.+. limit.s
0d00: 65 63 20 2b 3d 20 31 3b 0a 2b 09 20 20 20 20 6c ec += 1;.+. l
0d10: 69 6d 69 74 2e 75 73 65 63 20 2d 3d 20 31 30 30 imit.usec -= 100
0d20: 30 30 30 30 3b 0a 2b 09 7d 0a 2b 09 74 69 6d 65 0000;.+.}.+.time
0d30: 4c 69 6d 69 74 50 74 72 20 3d 20 26 6c 69 6d 69 LimitPtr = &limi
0d40: 74 3b 0a 2b 20 20 20 20 7d 0a 20 0a 20 20 20 20 t;.+ }. .
0d50: 20 6d 65 6d 63 70 79 28 26 69 50 74 72 2d 3e 6c memcpy(&iPtr->l
0d60: 69 6d 69 74 2e 74 69 6d 65 2c 20 74 69 6d 65 4c imit.time, timeL
0d70: 69 6d 69 74 50 74 72 2c 20 73 69 7a 65 6f 66 28 imitPtr, sizeof(
0d80: 54 63 6c 5f 54 69 6d 65 29 29 3b 0a 20 20 20 20 Tcl_Time));.
0d90: 20 69 66 20 28 69 50 74 72 2d 3e 6c 69 6d 69 74 if (iPtr->limit
0da0: 2e 74 69 6d 65 45 76 65 6e 74 20 21 3d 20 4e 55 .timeEvent != NU
0db0: 4c 4c 29 20 7b 0a 20 09 54 63 6c 5f 44 65 6c 65 LL) {. .Tcl_Dele
0dc0: 74 65 54 69 6d 65 72 48 61 6e 64 6c 65 72 28 69 teTimerHandler(i
0dd0: 50 74 72 2d 3e 6c 69 6d 69 74 2e 74 69 6d 65 45 Ptr->limit.timeE
0de0: 76 65 6e 74 29 3b 0a 20 20 20 20 20 7d 0a 40 40 vent);. }.@@
0df0: 20 2d 34 30 33 31 2c 31 31 20 2b 34 30 34 39 2c -4031,11 +4049,
0e00: 33 30 20 40 40 0a 20 54 63 6c 5f 4c 69 6d 69 74 30 @@. Tcl_Limit
0e10: 47 65 74 54 69 6d 65 28 0a 20 20 20 20 20 54 63 GetTime(. Tc
0e20: 6c 5f 49 6e 74 65 72 70 20 2a 69 6e 74 65 72 70 l_Interp *interp
0e30: 2c 0a 20 20 20 20 20 54 63 6c 5f 54 69 6d 65 20 ,. Tcl_Time
0e40: 2a 74 69 6d 65 4c 69 6d 69 74 50 74 72 29 0a 20 *timeLimitPtr).
0e50: 7b 0a 20 20 20 20 20 49 6e 74 65 72 70 20 2a 69 {. Interp *i
0e60: 50 74 72 20 3d 20 28 49 6e 74 65 72 70 20 2a 29 Ptr = (Interp *)
0e70: 20 69 6e 74 65 72 70 3b 0a 2b 20 20 20 20 54 63 interp;.+ Tc
0e80: 6c 5f 54 69 6d 65 20 6d 6f 6e 6f 2c 20 72 65 61 l_Time mono, rea
0e90: 6c 2c 20 6c 69 6d 69 74 3b 0a 20 0a 2b 20 20 20 l, limit;. .+
0ea0: 20 69 66 20 28 54 63 6c 70 47 65 74 4d 6f 6e 6f if (TclpGetMono
0eb0: 74 6f 6e 69 63 54 69 6d 65 28 26 6d 6f 6e 6f 29 tonicTime(&mono)
0ec0: 29 20 7b 0a 2b 09 54 63 6c 5f 47 65 74 54 69 6d ) {.+.Tcl_GetTim
0ed0: 65 28 26 72 65 61 6c 29 3b 0a 2b 09 6c 69 6d 69 e(&real);.+.limi
0ee0: 74 20 3d 20 69 50 74 72 2d 3e 6c 69 6d 69 74 2e t = iPtr->limit.
0ef0: 74 69 6d 65 3b 0a 2b 09 6c 69 6d 69 74 2e 73 65 time;.+.limit.se
0f00: 63 20 2d 3d 20 6d 6f 6e 6f 2e 73 65 63 3b 0a 2b c -= mono.sec;.+
0f10: 09 6c 69 6d 69 74 2e 75 73 65 63 20 2d 3d 20 6d .limit.usec -= m
0f20: 6f 6e 6f 2e 75 73 65 63 3b 0a 2b 09 69 66 20 28 ono.usec;.+.if (
0f30: 6c 69 6d 69 74 2e 75 73 65 63 20 3c 20 30 29 20 limit.usec < 0)
0f40: 7b 0a 2b 09 20 20 20 20 6c 69 6d 69 74 2e 73 65 {.+. limit.se
0f50: 63 20 2d 3d 20 31 3b 0a 2b 09 20 20 20 20 6c 69 c -= 1;.+. li
0f60: 6d 69 74 2e 75 73 65 63 20 2b 3d 20 31 30 30 30 mit.usec += 1000
0f70: 30 30 30 3b 0a 2b 09 7d 0a 2b 09 6c 69 6d 69 74 000;.+.}.+.limit
0f80: 2e 73 65 63 20 2b 3d 20 72 65 61 6c 2e 73 65 63 .sec += real.sec
0f90: 3b 0a 2b 09 6c 69 6d 69 74 2e 75 73 65 63 20 2b ;.+.limit.usec +
0fa0: 3d 20 72 65 61 6c 2e 75 73 65 63 3b 0a 2b 09 69 = real.usec;.+.i
0fb0: 66 20 28 6c 69 6d 69 74 2e 75 73 65 63 20 3e 3d f (limit.usec >=
0fc0: 20 31 30 30 30 30 30 30 29 20 7b 0a 2b 09 20 20 1000000) {.+.
0fd0: 20 20 6c 69 6d 69 74 2e 73 65 63 20 2b 3d 20 31 limit.sec += 1
0fe0: 3b 0a 2b 09 20 20 20 20 6c 69 6d 69 74 2e 75 73 ;.+. limit.us
0ff0: 65 63 20 2d 3d 20 31 30 30 30 30 30 30 3b 0a 2b ec -= 1000000;.+
1000: 09 7d 0a 2b 09 6d 65 6d 63 70 79 28 74 69 6d 65 .}.+.memcpy(time
1010: 4c 69 6d 69 74 50 74 72 2c 20 26 6c 69 6d 69 74 LimitPtr, &limit
1020: 2c 20 73 69 7a 65 6f 66 28 54 63 6c 5f 54 69 6d , sizeof(Tcl_Tim
1030: 65 29 29 3b 0a 2b 09 72 65 74 75 72 6e 3b 0a 2b e));.+.return;.+
1040: 20 20 20 20 7d 0a 20 20 20 20 20 6d 65 6d 63 70 }. memcp
1050: 79 28 74 69 6d 65 4c 69 6d 69 74 50 74 72 2c 20 y(timeLimitPtr,
1060: 26 69 50 74 72 2d 3e 6c 69 6d 69 74 2e 74 69 6d &iPtr->limit.tim
1070: 65 2c 20 73 69 7a 65 6f 66 28 54 63 6c 5f 54 69 e, sizeof(Tcl_Ti
1080: 6d 65 29 29 3b 0a 20 7d 0a 20 0c 0a 20 2f 2a 0a me));. }. .. /*.
1090: 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *-------------
10a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
10b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
10c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
10d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 0a 49 6e 64 65 78 ---------..Index
10e0: 3a 20 67 65 6e 65 72 69 63 2f 74 63 6c 54 69 6d : generic/tclTim
10f0: 65 72 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d er.c.===========
1100: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1110: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1120: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1130: 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 67 65 6e 65 =======.--- gene
1140: 72 69 63 2f 74 63 6c 54 69 6d 65 72 2e 63 0a 2b ric/tclTimer.c.+
1150: 2b 2b 20 67 65 6e 65 72 69 63 2f 74 63 6c 54 69 ++ generic/tclTi
1160: 6d 65 72 2e 63 0a 40 40 20 2d 32 35 37 2c 31 31 mer.c.@@ -257,11
1170: 20 2b 32 35 37 2c 31 31 20 40 40 0a 20 0a 20 20 +257,11 @@. .
1180: 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 43 6f /*. * Co
1190: 6d 70 75 74 65 20 77 68 65 6e 20 74 68 65 20 65 mpute when the e
11a0: 76 65 6e 74 20 73 68 6f 75 6c 64 20 66 69 72 65 vent should fire
11b0: 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2d 20 20 .. */. .-
11c0: 20 20 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 74 Tcl_GetTime(&t
11d0: 69 6d 65 29 3b 0a 2b 20 20 20 20 54 63 6c 70 47 ime);.+ TclpG
11e0: 65 74 4d 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 28 etMonotonicTime(
11f0: 26 74 69 6d 65 29 3b 0a 20 20 20 20 20 74 69 6d &time);. tim
1200: 65 2e 73 65 63 20 2b 3d 20 6d 69 6c 6c 69 73 65 e.sec += millise
1210: 63 6f 6e 64 73 2f 31 30 30 30 3b 0a 20 20 20 20 conds/1000;.
1220: 20 74 69 6d 65 2e 75 73 65 63 20 2b 3d 20 28 6d time.usec += (m
1230: 69 6c 6c 69 73 65 63 6f 6e 64 73 25 31 30 30 30 illiseconds%1000
1240: 29 2a 31 30 30 30 3b 0a 20 20 20 20 20 69 66 20 )*1000;. if
1250: 28 74 69 6d 65 2e 75 73 65 63 20 3e 3d 20 31 30 (time.usec >= 10
1260: 30 30 30 30 30 29 20 7b 0a 20 09 74 69 6d 65 2e 00000) {. .time.
1270: 75 73 65 63 20 2d 3d 20 31 30 30 30 30 30 30 3b usec -= 1000000;
1280: 0a 20 09 74 69 6d 65 2e 73 65 63 20 2b 3d 20 31 . .time.sec += 1
1290: 3b 0a 40 40 20 2d 34 31 35 2c 31 31 20 2b 34 31 ;.@@ -415,11 +41
12a0: 35 2c 31 31 20 40 40 0a 20 20 20 20 20 7d 20 65 5,11 @@. } e
12b0: 6c 73 65 20 69 66 20 28 28 66 6c 61 67 73 20 26 lse if ((flags &
12c0: 20 54 43 4c 5f 54 49 4d 45 52 5f 45 56 45 4e 54 TCL_TIMER_EVENT
12d0: 53 29 20 26 26 20 74 73 64 50 74 72 2d 3e 66 69 S) && tsdPtr->fi
12e0: 72 73 74 54 69 6d 65 72 48 61 6e 64 6c 65 72 50 rstTimerHandlerP
12f0: 74 72 29 20 7b 0a 20 09 2f 2a 0a 20 09 20 2a 20 tr) {. ./*. . *
1300: 43 6f 6d 70 75 74 65 20 74 68 65 20 74 69 6d 65 Compute the time
1310: 6f 75 74 20 66 6f 72 20 74 68 65 20 6e 65 78 74 out for the next
1320: 20 74 69 6d 65 72 20 6f 6e 20 74 68 65 20 6c 69 timer on the li
1330: 73 74 2e 0a 20 09 20 2a 2f 0a 20 0a 2d 09 54 63 st.. . */. .-.Tc
1340: 6c 5f 47 65 74 54 69 6d 65 28 26 62 6c 6f 63 6b l_GetTime(&block
1350: 54 69 6d 65 29 3b 0a 2b 09 54 63 6c 70 47 65 74 Time);.+.TclpGet
1360: 4d 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 28 26 62 MonotonicTime(&b
1370: 6c 6f 63 6b 54 69 6d 65 29 3b 0a 20 09 62 6c 6f lockTime);. .blo
1380: 63 6b 54 69 6d 65 2e 73 65 63 20 3d 20 74 73 64 ckTime.sec = tsd
1390: 50 74 72 2d 3e 66 69 72 73 74 54 69 6d 65 72 48 Ptr->firstTimerH
13a0: 61 6e 64 6c 65 72 50 74 72 2d 3e 74 69 6d 65 2e andlerPtr->time.
13b0: 73 65 63 20 2d 20 62 6c 6f 63 6b 54 69 6d 65 2e sec - blockTime.
13c0: 73 65 63 3b 0a 20 09 62 6c 6f 63 6b 54 69 6d 65 sec;. .blockTime
13d0: 2e 75 73 65 63 20 3d 20 74 73 64 50 74 72 2d 3e .usec = tsdPtr->
13e0: 66 69 72 73 74 54 69 6d 65 72 48 61 6e 64 6c 65 firstTimerHandle
13f0: 72 50 74 72 2d 3e 74 69 6d 65 2e 75 73 65 63 20 rPtr->time.usec
1400: 2d 0a 20 09 09 62 6c 6f 63 6b 54 69 6d 65 2e 75 -. ..blockTime.u
1410: 73 65 63 3b 0a 20 09 69 66 20 28 62 6c 6f 63 6b sec;. .if (block
1420: 54 69 6d 65 2e 75 73 65 63 20 3c 20 30 29 20 7b Time.usec < 0) {
1430: 0a 20 09 20 20 20 20 62 6c 6f 63 6b 54 69 6d 65 . . blockTime
1440: 2e 73 65 63 20 2d 3d 20 31 3b 0a 40 40 20 2d 34 .sec -= 1;.@@ -4
1450: 36 36 2c 31 31 20 2b 34 36 36 2c 31 31 20 40 40 66,11 +466,11 @@
1460: 0a 20 20 20 20 20 69 66 20 28 28 66 6c 61 67 73 . if ((flags
1470: 20 26 20 54 43 4c 5f 54 49 4d 45 52 5f 45 56 45 & TCL_TIMER_EVE
1480: 4e 54 53 29 20 26 26 20 74 73 64 50 74 72 2d 3e NTS) && tsdPtr->
1490: 66 69 72 73 74 54 69 6d 65 72 48 61 6e 64 6c 65 firstTimerHandle
14a0: 72 50 74 72 29 20 7b 0a 20 09 2f 2a 0a 20 09 20 rPtr) {. ./*. .
14b0: 2a 20 43 6f 6d 70 75 74 65 20 74 68 65 20 74 69 * Compute the ti
14c0: 6d 65 6f 75 74 20 66 6f 72 20 74 68 65 20 6e 65 meout for the ne
14d0: 78 74 20 74 69 6d 65 72 20 6f 6e 20 74 68 65 20 xt timer on the
14e0: 6c 69 73 74 2e 0a 20 09 20 2a 2f 0a 20 0a 2d 09 list.. . */. .-.
14f0: 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 62 6c 6f Tcl_GetTime(&blo
1500: 63 6b 54 69 6d 65 29 3b 0a 2b 09 54 63 6c 70 47 ckTime);.+.TclpG
1510: 65 74 4d 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 28 etMonotonicTime(
1520: 26 62 6c 6f 63 6b 54 69 6d 65 29 3b 0a 20 09 62 &blockTime);. .b
1530: 6c 6f 63 6b 54 69 6d 65 2e 73 65 63 20 3d 20 74 lockTime.sec = t
1540: 73 64 50 74 72 2d 3e 66 69 72 73 74 54 69 6d 65 sdPtr->firstTime
1550: 72 48 61 6e 64 6c 65 72 50 74 72 2d 3e 74 69 6d rHandlerPtr->tim
1560: 65 2e 73 65 63 20 2d 20 62 6c 6f 63 6b 54 69 6d e.sec - blockTim
1570: 65 2e 73 65 63 3b 0a 20 09 62 6c 6f 63 6b 54 69 e.sec;. .blockTi
1580: 6d 65 2e 75 73 65 63 20 3d 20 74 73 64 50 74 72 me.usec = tsdPtr
1590: 2d 3e 66 69 72 73 74 54 69 6d 65 72 48 61 6e 64 ->firstTimerHand
15a0: 6c 65 72 50 74 72 2d 3e 74 69 6d 65 2e 75 73 65 lerPtr->time.use
15b0: 63 20 2d 0a 20 09 09 62 6c 6f 63 6b 54 69 6d 65 c -. ..blockTime
15c0: 2e 75 73 65 63 3b 0a 20 09 69 66 20 28 62 6c 6f .usec;. .if (blo
15d0: 63 6b 54 69 6d 65 2e 75 73 65 63 20 3c 20 30 29 ckTime.usec < 0)
15e0: 20 7b 0a 20 09 20 20 20 20 62 6c 6f 63 6b 54 69 {. . blockTi
15f0: 6d 65 2e 73 65 63 20 2d 3d 20 31 3b 0a 40 40 20 me.sec -= 1;.@@
1600: 2d 35 36 32 2c 31 31 20 2b 35 36 32 2c 31 31 20 -562,11 +562,11
1610: 40 40 0a 20 20 20 20 20 20 2a 09 20 20 74 69 6d @@. *. tim
1620: 65 72 73 20 61 70 70 65 61 72 69 6e 67 20 62 65 ers appearing be
1630: 66 6f 72 65 20 6c 61 74 65 72 20 6f 6e 65 73 2e fore later ones.
1640: 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20 20 20 20 . */. .
1650: 20 74 73 64 50 74 72 2d 3e 74 69 6d 65 72 50 65 tsdPtr->timerPe
1660: 6e 64 69 6e 67 20 3d 20 30 3b 0a 20 20 20 20 20 nding = 0;.
1670: 63 75 72 72 65 6e 74 54 69 6d 65 72 49 64 20 3d currentTimerId =
1680: 20 74 73 64 50 74 72 2d 3e 6c 61 73 74 54 69 6d tsdPtr->lastTim
1690: 65 72 49 64 3b 0a 2d 20 20 20 20 54 63 6c 5f 47 erId;.- Tcl_G
16a0: 65 74 54 69 6d 65 28 26 74 69 6d 65 29 3b 0a 2b etTime(&time);.+
16b0: 20 20 20 20 54 63 6c 70 47 65 74 4d 6f 6e 6f 74 TclpGetMonot
16c0: 6f 6e 69 63 54 69 6d 65 28 26 74 69 6d 65 29 3b onicTime(&time);
16d0: 0a 20 20 20 20 20 77 68 69 6c 65 20 28 31 29 20 . while (1)
16e0: 7b 0a 20 09 6e 65 78 74 50 74 72 50 74 72 20 3d {. .nextPtrPtr =
16f0: 20 26 74 73 64 50 74 72 2d 3e 66 69 72 73 74 54 &tsdPtr->firstT
1700: 69 6d 65 72 48 61 6e 64 6c 65 72 50 74 72 3b 0a imerHandlerPtr;.
1710: 20 09 74 69 6d 65 72 48 61 6e 64 6c 65 72 50 74 .timerHandlerPt
1720: 72 20 3d 20 74 73 64 50 74 72 2d 3e 66 69 72 73 r = tsdPtr->firs
1730: 74 54 69 6d 65 72 48 61 6e 64 6c 65 72 50 74 72 tTimerHandlerPtr
1740: 3b 0a 20 09 69 66 20 28 74 69 6d 65 72 48 61 6e ;. .if (timerHan
1750: 64 6c 65 72 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 dlerPtr == NULL)
1760: 20 7b 0a 20 09 20 20 20 20 62 72 65 61 6b 3b 0a {. . break;.
1770: 40 40 20 2d 38 37 30 2c 31 31 20 2b 38 37 30 2c @@ -870,11 +870,
1780: 31 31 20 40 40 0a 20 09 20 2a 20 61 72 6f 75 6e 11 @@. . * aroun
1790: 64 20 77 68 65 6e 20 77 72 61 70 2d 61 72 6f 75 d when wrap-arou
17a0: 6e 64 20 6f 63 63 75 72 73 2e 0a 20 09 20 2a 2f nd occurs.. . */
17b0: 0a 20 0a 20 09 61 66 74 65 72 50 74 72 2d 3e 69 . . .afterPtr->i
17c0: 64 20 3d 20 74 73 64 50 74 72 2d 3e 61 66 74 65 d = tsdPtr->afte
17d0: 72 49 64 3b 0a 20 09 74 73 64 50 74 72 2d 3e 61 rId;. .tsdPtr->a
17e0: 66 74 65 72 49 64 20 2b 3d 20 31 3b 0a 2d 09 54 fterId += 1;.-.T
17f0: 63 6c 5f 47 65 74 54 69 6d 65 28 26 77 61 6b 65 cl_GetTime(&wake
1800: 75 70 29 3b 0a 2b 09 54 63 6c 70 47 65 74 4d 6f up);.+.TclpGetMo
1810: 6e 6f 74 6f 6e 69 63 54 69 6d 65 28 26 77 61 6b notonicTime(&wak
1820: 65 75 70 29 3b 0a 20 09 77 61 6b 65 75 70 2e 73 eup);. .wakeup.s
1830: 65 63 20 2b 3d 20 28 6c 6f 6e 67 29 28 6d 73 20 ec += (long)(ms
1840: 2f 20 31 30 30 30 29 3b 0a 20 09 77 61 6b 65 75 / 1000);. .wakeu
1850: 70 2e 75 73 65 63 20 2b 3d 20 28 28 6c 6f 6e 67 p.usec += ((long
1860: 29 28 6d 73 20 25 20 31 30 30 30 29 29 20 2a 20 )(ms % 1000)) *
1870: 31 30 30 30 3b 0a 20 09 69 66 20 28 77 61 6b 65 1000;. .if (wake
1880: 75 70 2e 75 73 65 63 20 3e 20 31 30 30 30 30 30 up.usec > 100000
1890: 30 29 20 7b 0a 20 09 20 20 20 20 77 61 6b 65 75 0) {. . wakeu
18a0: 70 2e 73 65 63 2b 2b 3b 0a 20 09 20 20 20 20 77 p.sec++;. . w
18b0: 61 6b 65 75 70 2e 75 73 65 63 20 2d 3d 20 31 30 akeup.usec -= 10
18c0: 30 30 30 30 30 3b 0a 40 40 20 2d 31 30 31 35 2c 00000;.@@ -1015,
18d0: 31 31 20 2b 31 30 31 35 2c 31 31 20 40 40 0a 20 11 +1015,11 @@.
18e0: 20 20 20 20 49 6e 74 65 72 70 20 2a 69 50 74 72 Interp *iPtr
18f0: 20 3d 20 28 49 6e 74 65 72 70 20 2a 29 20 69 6e = (Interp *) in
1900: 74 65 72 70 3b 0a 20 0a 20 20 20 20 20 54 63 6c terp;. . Tcl
1910: 5f 54 69 6d 65 20 65 6e 64 54 69 6d 65 2c 20 6e _Time endTime, n
1920: 6f 77 3b 0a 20 20 20 20 20 54 63 6c 5f 57 69 64 ow;. Tcl_Wid
1930: 65 49 6e 74 20 64 69 66 66 3b 0a 20 0a 2d 20 20 eInt diff;. .-
1940: 20 20 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 6e Tcl_GetTime(&n
1950: 6f 77 29 3b 0a 2b 20 20 20 20 54 63 6c 70 47 65 ow);.+ TclpGe
1960: 74 4d 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 28 26 tMonotonicTime(&
1970: 6e 6f 77 29 3b 0a 20 20 20 20 20 65 6e 64 54 69 now);. endTi
1980: 6d 65 20 3d 20 6e 6f 77 3b 0a 20 20 20 20 20 65 me = now;. e
1990: 6e 64 54 69 6d 65 2e 73 65 63 20 2b 3d 20 28 6c ndTime.sec += (l
19a0: 6f 6e 67 29 28 6d 73 2f 31 30 30 30 29 3b 0a 20 ong)(ms/1000);.
19b0: 20 20 20 20 65 6e 64 54 69 6d 65 2e 75 73 65 63 endTime.usec
19c0: 20 2b 3d 20 28 28 69 6e 74 29 28 6d 73 25 31 30 += ((int)(ms%10
19d0: 30 30 29 29 2a 31 30 30 30 3b 0a 20 20 20 20 20 00))*1000;.
19e0: 69 66 20 28 65 6e 64 54 69 6d 65 2e 75 73 65 63 if (endTime.usec
19f0: 20 3e 3d 20 31 30 30 30 30 30 30 29 20 7b 0a 20 >= 1000000) {.
1a00: 09 65 6e 64 54 69 6d 65 2e 73 65 63 2b 2b 3b 0a .endTime.sec++;.
1a10: 40 40 20 2d 31 30 38 31 2c 31 31 20 2b 31 30 38 @@ -1081,11 +108
1a20: 31 2c 31 31 20 40 40 0a 20 09 20 20 20 20 7d 0a 1,11 @@. . }.
1a30: 20 09 20 20 20 20 69 66 20 28 54 63 6c 5f 4c 69 . if (Tcl_Li
1a40: 6d 69 74 43 68 65 63 6b 28 69 6e 74 65 72 70 29 mitCheck(interp)
1a50: 20 21 3d 20 54 43 4c 5f 4f 4b 29 20 7b 0a 20 09 != TCL_OK) {. .
1a60: 09 72 65 74 75 72 6e 20 54 43 4c 5f 45 52 52 4f .return TCL_ERRO
1a70: 52 3b 0a 20 09 20 20 20 20 7d 0a 20 09 7d 0a 2d R;. . }. .}.-
1a80: 20 20 20 20 20 20 20 20 54 63 6c 5f 47 65 74 54 Tcl_GetT
1a90: 69 6d 65 28 26 6e 6f 77 29 3b 0a 2b 20 20 20 20 ime(&now);.+
1aa0: 20 20 20 20 54 63 6c 70 47 65 74 4d 6f 6e 6f 74 TclpGetMonot
1ab0: 6f 6e 69 63 54 69 6d 65 28 26 6e 6f 77 29 3b 0a onicTime(&now);.
1ac0: 20 20 20 20 20 7d 20 77 68 69 6c 65 20 28 54 43 } while (TC
1ad0: 4c 5f 54 49 4d 45 5f 42 45 46 4f 52 45 28 6e 6f L_TIME_BEFORE(no
1ae0: 77 2c 20 65 6e 64 54 69 6d 65 29 29 3b 0a 20 20 w, endTime));.
1af0: 20 20 20 72 65 74 75 72 6e 20 54 43 4c 5f 4f 4b return TCL_OK
1b00: 3b 0a 20 7d 0a 20 0c 0a 20 2f 2a 0a 0a 49 6e 64 ;. }. .. /*..Ind
1b10: 65 78 3a 20 75 6e 69 78 2f 63 6f 6e 66 69 67 75 ex: unix/configu
1b20: 72 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d re.=============
1b30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1b40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1b50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
1b60: 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 78 2f 63 =====.--- unix/c
1b70: 6f 6e 66 69 67 75 72 65 0a 2b 2b 2b 20 75 6e 69 onfigure.+++ uni
1b80: 78 2f 63 6f 6e 66 69 67 75 72 65 0a 40 40 20 2d x/configure.@@ -
1b90: 34 36 37 34 2c 31 31 20 2b 34 36 37 34 2c 31 32 4674,11 +4674,12
1ba0: 20 40 40 0a 20 0a 20 09 61 63 5f 73 61 76 65 64 @@. . .ac_saved
1bb0: 5f 6c 69 62 73 3d 24 4c 49 42 53 0a 20 09 4c 49 _libs=$LIBS. .LI
1bc0: 42 53 3d 22 24 4c 49 42 53 20 24 54 48 52 45 41 BS="$LIBS $THREA
1bd0: 44 53 5f 4c 49 42 53 22 0a 20 0a 20 0a 2d 66 6f DS_LIBS". . .-fo
1be0: 72 20 61 63 5f 66 75 6e 63 20 69 6e 20 70 74 68 r ac_func in pth
1bf0: 72 65 61 64 5f 61 74 74 72 5f 73 65 74 73 74 61 read_attr_setsta
1c00: 63 6b 73 69 7a 65 20 70 74 68 72 65 61 64 5f 61 cksize pthread_a
1c10: 74 66 6f 72 6b 0a 2b 0a 2b 66 6f 72 20 61 63 5f tfork.+.+for ac_
1c20: 66 75 6e 63 20 69 6e 20 70 74 68 72 65 61 64 5f func in pthread_
1c30: 61 74 74 72 5f 73 65 74 73 74 61 63 6b 73 69 7a attr_setstacksiz
1c40: 65 20 70 74 68 72 65 61 64 5f 61 74 66 6f 72 6b e pthread_atfork
1c50: 20 70 74 68 72 65 61 64 5f 63 6f 6e 64 61 74 74 pthread_condatt
1c60: 72 5f 73 65 74 63 6c 6f 63 6b 0a 20 64 6f 0a 20 r_setclock. do.
1c70: 61 73 5f 61 63 5f 76 61 72 3d 60 65 63 68 6f 20 as_ac_var=`echo
1c80: 22 61 63 5f 63 76 5f 66 75 6e 63 5f 24 61 63 5f "ac_cv_func_$ac_
1c90: 66 75 6e 63 22 20 7c 20 24 61 73 5f 74 72 5f 73 func" | $as_tr_s
1ca0: 68 60 0a 20 65 63 68 6f 20 22 24 61 73 5f 6d 65 h`. echo "$as_me
1cb0: 3a 24 4c 49 4e 45 4e 4f 3a 20 63 68 65 63 6b 69 :$LINENO: checki
1cc0: 6e 67 20 66 6f 72 20 24 61 63 5f 66 75 6e 63 22 ng for $ac_func"
1cd0: 20 3e 26 35 0a 20 65 63 68 6f 20 24 45 43 48 4f >&5. echo $ECHO
1ce0: 5f 4e 20 22 63 68 65 63 6b 69 6e 67 20 66 6f 72 _N "checking for
1cf0: 20 24 61 63 5f 66 75 6e 63 2e 2e 2e 20 24 45 43 $ac_func... $EC
1d00: 48 4f 5f 43 22 20 3e 26 36 0a 20 69 66 20 65 76 HO_C" >&6. if ev
1d10: 61 6c 20 22 74 65 73 74 20 5c 22 5c 24 7b 24 61 al "test \"\${$a
1d20: 73 5f 61 63 5f 76 61 72 2b 73 65 74 7d 5c 22 20 s_ac_var+set}\"
1d30: 3d 20 73 65 74 22 3b 20 74 68 65 6e 0a 40 40 20 = set"; then.@@
1d40: 2d 35 37 36 31 2c 31 30 20 2b 35 37 36 32 2c 31 -5761,10 +5762,1
1d50: 38 32 20 40 40 0a 20 20 20 4c 49 42 53 3d 22 24 82 @@. LIBS="$
1d60: 4c 49 42 53 20 2d 6c 6e 73 6c 22 0a 20 66 69 0a LIBS -lnsl". fi.
1d70: 20 0a 20 66 69 0a 20 0a 2b 0a 2b 20 20 20 20 65 . fi. .+.+ e
1d80: 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 4e cho "$as_me:$LIN
1d90: 45 4e 4f 3a 20 63 68 65 63 6b 69 6e 67 20 66 6f ENO: checking fo
1da0: 72 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 20 r clock_gettime
1db0: 69 6e 20 2d 6c 72 74 22 20 3e 26 35 0a 2b 65 63 in -lrt" >&5.+ec
1dc0: 68 6f 20 24 45 43 48 4f 5f 4e 20 22 63 68 65 63 ho $ECHO_N "chec
1dd0: 6b 69 6e 67 20 66 6f 72 20 63 6c 6f 63 6b 5f 67 king for clock_g
1de0: 65 74 74 69 6d 65 20 69 6e 20 2d 6c 72 74 2e 2e ettime in -lrt..
1df0: 2e 20 24 45 43 48 4f 5f 43 22 20 3e 26 36 0a 2b . $ECHO_C" >&6.+
1e00: 69 66 20 74 65 73 74 20 22 24 7b 61 63 5f 63 76 if test "${ac_cv
1e10: 5f 6c 69 62 5f 72 74 5f 63 6c 6f 63 6b 5f 67 65 _lib_rt_clock_ge
1e20: 74 74 69 6d 65 2b 73 65 74 7d 22 20 3d 20 73 65 ttime+set}" = se
1e30: 74 3b 20 74 68 65 6e 0a 2b 20 20 65 63 68 6f 20 t; then.+ echo
1e40: 24 45 43 48 4f 5f 4e 20 22 28 63 61 63 68 65 64 $ECHO_N "(cached
1e50: 29 20 24 45 43 48 4f 5f 43 22 20 3e 26 36 0a 2b ) $ECHO_C" >&6.+
1e60: 65 6c 73 65 0a 2b 20 20 61 63 5f 63 68 65 63 6b else.+ ac_check
1e70: 5f 6c 69 62 5f 73 61 76 65 5f 4c 49 42 53 3d 24 _lib_save_LIBS=$
1e80: 4c 49 42 53 0a 2b 4c 49 42 53 3d 22 2d 6c 72 74 LIBS.+LIBS="-lrt
1e90: 20 20 24 4c 49 42 53 22 0a 2b 63 61 74 20 3e 63 $LIBS".+cat >c
1ea0: 6f 6e 66 74 65 73 74 2e 24 61 63 5f 65 78 74 20 onftest.$ac_ext
1eb0: 3c 3c 5f 41 43 45 4f 46 0a 2b 2f 2a 20 63 6f 6e <<_ACEOF.+/* con
1ec0: 66 64 65 66 73 2e 68 2e 20 20 2a 2f 0a 2b 5f 41 fdefs.h. */.+_A
1ed0: 43 45 4f 46 0a 2b 63 61 74 20 63 6f 6e 66 64 65 CEOF.+cat confde
1ee0: 66 73 2e 68 20 3e 3e 63 6f 6e 66 74 65 73 74 2e fs.h >>conftest.
1ef0: 24 61 63 5f 65 78 74 0a 2b 63 61 74 20 3e 3e 63 $ac_ext.+cat >>c
1f00: 6f 6e 66 74 65 73 74 2e 24 61 63 5f 65 78 74 20 onftest.$ac_ext
1f10: 3c 3c 5f 41 43 45 4f 46 0a 2b 2f 2a 20 65 6e 64 <<_ACEOF.+/* end
1f20: 20 63 6f 6e 66 64 65 66 73 2e 68 2e 20 20 2a 2f confdefs.h. */
1f30: 0a 2b 0a 2b 2f 2a 20 4f 76 65 72 72 69 64 65 20 .+.+/* Override
1f40: 61 6e 79 20 67 63 63 32 20 69 6e 74 65 72 6e 61 any gcc2 interna
1f50: 6c 20 70 72 6f 74 6f 74 79 70 65 20 74 6f 20 61 l prototype to a
1f60: 76 6f 69 64 20 61 6e 20 65 72 72 6f 72 2e 20 20 void an error.
1f70: 2a 2f 0a 2b 23 69 66 64 65 66 20 5f 5f 63 70 6c */.+#ifdef __cpl
1f80: 75 73 70 6c 75 73 0a 2b 65 78 74 65 72 6e 20 22 usplus.+extern "
1f90: 43 22 0a 2b 23 65 6e 64 69 66 0a 2b 2f 2a 20 57 C".+#endif.+/* W
1fa0: 65 20 75 73 65 20 63 68 61 72 20 62 65 63 61 75 e use char becau
1fb0: 73 65 20 69 6e 74 20 6d 69 67 68 74 20 6d 61 74 se int might mat
1fc0: 63 68 20 74 68 65 20 72 65 74 75 72 6e 20 74 79 ch the return ty
1fd0: 70 65 20 6f 66 20 61 20 67 63 63 32 0a 2b 20 20 pe of a gcc2.+
1fe0: 20 62 75 69 6c 74 69 6e 20 61 6e 64 20 74 68 65 builtin and the
1ff0: 6e 20 69 74 73 20 61 72 67 75 6d 65 6e 74 20 70 n its argument p
2000: 72 6f 74 6f 74 79 70 65 20 77 6f 75 6c 64 20 73 rototype would s
2010: 74 69 6c 6c 20 61 70 70 6c 79 2e 20 20 2a 2f 0a till apply. */.
2020: 2b 63 68 61 72 20 63 6c 6f 63 6b 5f 67 65 74 74 +char clock_gett
2030: 69 6d 65 20 28 29 3b 0a 2b 69 6e 74 0a 2b 6d 61 ime ();.+int.+ma
2040: 69 6e 20 28 29 0a 2b 7b 0a 2b 63 6c 6f 63 6b 5f in ().+{.+clock_
2050: 67 65 74 74 69 6d 65 20 28 29 3b 0a 2b 20 20 3b gettime ();.+ ;
2060: 0a 2b 20 20 72 65 74 75 72 6e 20 30 3b 0a 2b 7d .+ return 0;.+}
2070: 0a 2b 5f 41 43 45 4f 46 0a 2b 72 6d 20 2d 66 20 .+_ACEOF.+rm -f
2080: 63 6f 6e 66 74 65 73 74 2e 24 61 63 5f 6f 62 6a conftest.$ac_obj
2090: 65 78 74 20 63 6f 6e 66 74 65 73 74 24 61 63 5f ext conftest$ac_
20a0: 65 78 65 65 78 74 0a 2b 69 66 20 7b 20 28 65 76 exeext.+if { (ev
20b0: 61 6c 20 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a al echo "$as_me:
20c0: 24 4c 49 4e 45 4e 4f 3a 20 5c 22 24 61 63 5f 6c $LINENO: \"$ac_l
20d0: 69 6e 6b 5c 22 22 29 20 3e 26 35 0a 2b 20 20 28 ink\"") >&5.+ (
20e0: 65 76 61 6c 20 24 61 63 5f 6c 69 6e 6b 29 20 32 eval $ac_link) 2
20f0: 3e 63 6f 6e 66 74 65 73 74 2e 65 72 31 0a 2b 20 >conftest.er1.+
2100: 20 61 63 5f 73 74 61 74 75 73 3d 24 3f 0a 2b 20 ac_status=$?.+
2110: 20 67 72 65 70 20 2d 76 20 27 5e 20 2a 2b 27 20 grep -v '^ *+'
2120: 63 6f 6e 66 74 65 73 74 2e 65 72 31 20 3e 63 6f conftest.er1 >co
2130: 6e 66 74 65 73 74 2e 65 72 72 0a 2b 20 20 72 6d nftest.err.+ rm
2140: 20 2d 66 20 63 6f 6e 66 74 65 73 74 2e 65 72 31 -f conftest.er1
2150: 0a 2b 20 20 63 61 74 20 63 6f 6e 66 74 65 73 74 .+ cat conftest
2160: 2e 65 72 72 20 3e 26 35 0a 2b 20 20 65 63 68 6f .err >&5.+ echo
2170: 20 22 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f "$as_me:$LINENO
2180: 3a 20 5c 24 3f 20 3d 20 24 61 63 5f 73 74 61 74 : \$? = $ac_stat
2190: 75 73 22 20 3e 26 35 0a 2b 20 20 28 65 78 69 74 us" >&5.+ (exit
21a0: 20 24 61 63 5f 73 74 61 74 75 73 29 3b 20 7d 20 $ac_status); }
21b0: 26 26 0a 2b 09 20 7b 20 61 63 5f 74 72 79 3d 27 &&.+. { ac_try='
21c0: 74 65 73 74 20 2d 7a 20 22 24 61 63 5f 63 5f 77 test -z "$ac_c_w
21d0: 65 72 72 6f 72 5f 66 6c 61 67 22 0a 2b 09 09 09 error_flag".+...
21e0: 20 7c 7c 20 74 65 73 74 20 21 20 2d 73 20 63 6f || test ! -s co
21f0: 6e 66 74 65 73 74 2e 65 72 72 27 0a 2b 20 20 7b nftest.err'.+ {
2200: 20 28 65 76 61 6c 20 65 63 68 6f 20 22 24 61 73 (eval echo "$as
2210: 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 5c 22 24 _me:$LINENO: \"$
2220: 61 63 5f 74 72 79 5c 22 22 29 20 3e 26 35 0a 2b ac_try\"") >&5.+
2230: 20 20 28 65 76 61 6c 20 24 61 63 5f 74 72 79 29 (eval $ac_try)
2240: 20 32 3e 26 35 0a 2b 20 20 61 63 5f 73 74 61 74 2>&5.+ ac_stat
2250: 75 73 3d 24 3f 0a 2b 20 20 65 63 68 6f 20 22 24 us=$?.+ echo "$
2260: 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 5c as_me:$LINENO: \
2270: 24 3f 20 3d 20 24 61 63 5f 73 74 61 74 75 73 22 $? = $ac_status"
2280: 20 3e 26 35 0a 2b 20 20 28 65 78 69 74 20 24 61 >&5.+ (exit $a
2290: 63 5f 73 74 61 74 75 73 29 3b 20 7d 3b 20 7d 20 c_status); }; }
22a0: 26 26 0a 2b 09 20 7b 20 61 63 5f 74 72 79 3d 27 &&.+. { ac_try='
22b0: 74 65 73 74 20 2d 73 20 63 6f 6e 66 74 65 73 74 test -s conftest
22c0: 24 61 63 5f 65 78 65 65 78 74 27 0a 2b 20 20 7b $ac_exeext'.+ {
22d0: 20 28 65 76 61 6c 20 65 63 68 6f 20 22 24 61 73 (eval echo "$as
22e0: 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 5c 22 24 _me:$LINENO: \"$
22f0: 61 63 5f 74 72 79 5c 22 22 29 20 3e 26 35 0a 2b ac_try\"") >&5.+
2300: 20 20 28 65 76 61 6c 20 24 61 63 5f 74 72 79 29 (eval $ac_try)
2310: 20 32 3e 26 35 0a 2b 20 20 61 63 5f 73 74 61 74 2>&5.+ ac_stat
2320: 75 73 3d 24 3f 0a 2b 20 20 65 63 68 6f 20 22 24 us=$?.+ echo "$
2330: 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 5c as_me:$LINENO: \
2340: 24 3f 20 3d 20 24 61 63 5f 73 74 61 74 75 73 22 $? = $ac_status"
2350: 20 3e 26 35 0a 2b 20 20 28 65 78 69 74 20 24 61 >&5.+ (exit $a
2360: 63 5f 73 74 61 74 75 73 29 3b 20 7d 3b 20 7d 3b c_status); }; };
2370: 20 74 68 65 6e 0a 2b 20 20 61 63 5f 63 76 5f 6c then.+ ac_cv_l
2380: 69 62 5f 72 74 5f 63 6c 6f 63 6b 5f 67 65 74 74 ib_rt_clock_gett
2390: 69 6d 65 3d 79 65 73 0a 2b 65 6c 73 65 0a 2b 20 ime=yes.+else.+
23a0: 20 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 20 66 echo "$as_me: f
23b0: 61 69 6c 65 64 20 70 72 6f 67 72 61 6d 20 77 61 ailed program wa
23c0: 73 3a 22 20 3e 26 35 0a 2b 73 65 64 20 27 73 2f s:" >&5.+sed 's/
23d0: 5e 2f 7c 20 2f 27 20 63 6f 6e 66 74 65 73 74 2e ^/| /' conftest.
23e0: 24 61 63 5f 65 78 74 20 3e 26 35 0a 2b 0a 2b 61 $ac_ext >&5.+.+a
23f0: 63 5f 63 76 5f 6c 69 62 5f 72 74 5f 63 6c 6f 63 c_cv_lib_rt_cloc
2400: 6b 5f 67 65 74 74 69 6d 65 3d 6e 6f 0a 2b 66 69 k_gettime=no.+fi
2410: 0a 2b 72 6d 20 2d 66 20 63 6f 6e 66 74 65 73 74 .+rm -f conftest
2420: 2e 65 72 72 20 63 6f 6e 66 74 65 73 74 2e 24 61 .err conftest.$a
2430: 63 5f 6f 62 6a 65 78 74 20 5c 0a 2b 20 20 20 20 c_objext \.+
2440: 20 20 63 6f 6e 66 74 65 73 74 24 61 63 5f 65 78 conftest$ac_ex
2450: 65 65 78 74 20 63 6f 6e 66 74 65 73 74 2e 24 61 eext conftest.$a
2460: 63 5f 65 78 74 0a 2b 4c 49 42 53 3d 24 61 63 5f c_ext.+LIBS=$ac_
2470: 63 68 65 63 6b 5f 6c 69 62 5f 73 61 76 65 5f 4c check_lib_save_L
2480: 49 42 53 0a 2b 66 69 0a 2b 65 63 68 6f 20 22 24 IBS.+fi.+echo "$
2490: 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 72 as_me:$LINENO: r
24a0: 65 73 75 6c 74 3a 20 24 61 63 5f 63 76 5f 6c 69 esult: $ac_cv_li
24b0: 62 5f 72 74 5f 63 6c 6f 63 6b 5f 67 65 74 74 69 b_rt_clock_getti
24c0: 6d 65 22 20 3e 26 35 0a 2b 65 63 68 6f 20 22 24 me" >&5.+echo "$
24d0: 7b 45 43 48 4f 5f 54 7d 24 61 63 5f 63 76 5f 6c {ECHO_T}$ac_cv_l
24e0: 69 62 5f 72 74 5f 63 6c 6f 63 6b 5f 67 65 74 74 ib_rt_clock_gett
24f0: 69 6d 65 22 20 3e 26 36 0a 2b 69 66 20 74 65 73 ime" >&6.+if tes
2500: 74 20 24 61 63 5f 63 76 5f 6c 69 62 5f 72 74 5f t $ac_cv_lib_rt_
2510: 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 20 3d 20 clock_gettime =
2520: 79 65 73 3b 20 74 68 65 6e 0a 2b 20 20 4c 49 42 yes; then.+ LIB
2530: 53 3d 22 24 4c 49 42 53 20 2d 6c 72 74 22 0a 2b S="$LIBS -lrt".+
2540: 66 69 0a 2b 0a 2b 0a 2b 0a 2b 66 6f 72 20 61 63 fi.+.+.+.+for ac
2550: 5f 66 75 6e 63 20 69 6e 20 63 6c 6f 63 6b 5f 67 _func in clock_g
2560: 65 74 74 69 6d 65 20 63 6c 6f 63 6b 5f 6e 61 6e ettime clock_nan
2570: 6f 73 6c 65 65 70 0a 2b 64 6f 0a 2b 61 73 5f 61 osleep.+do.+as_a
2580: 63 5f 76 61 72 3d 60 65 63 68 6f 20 22 61 63 5f c_var=`echo "ac_
2590: 63 76 5f 66 75 6e 63 5f 24 61 63 5f 66 75 6e 63 cv_func_$ac_func
25a0: 22 20 7c 20 24 61 73 5f 74 72 5f 73 68 60 0a 2b " | $as_tr_sh`.+
25b0: 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 echo "$as_me:$LI
25c0: 4e 45 4e 4f 3a 20 63 68 65 63 6b 69 6e 67 20 66 NENO: checking f
25d0: 6f 72 20 24 61 63 5f 66 75 6e 63 22 20 3e 26 35 or $ac_func" >&5
25e0: 0a 2b 65 63 68 6f 20 24 45 43 48 4f 5f 4e 20 22 .+echo $ECHO_N "
25f0: 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 24 61 63 checking for $ac
2600: 5f 66 75 6e 63 2e 2e 2e 20 24 45 43 48 4f 5f 43 _func... $ECHO_C
2610: 22 20 3e 26 36 0a 2b 69 66 20 65 76 61 6c 20 22 " >&6.+if eval "
2620: 74 65 73 74 20 5c 22 5c 24 7b 24 61 73 5f 61 63 test \"\${$as_ac
2630: 5f 76 61 72 2b 73 65 74 7d 5c 22 20 3d 20 73 65 _var+set}\" = se
2640: 74 22 3b 20 74 68 65 6e 0a 2b 20 20 65 63 68 6f t"; then.+ echo
2650: 20 24 45 43 48 4f 5f 4e 20 22 28 63 61 63 68 65 $ECHO_N "(cache
2660: 64 29 20 24 45 43 48 4f 5f 43 22 20 3e 26 36 0a d) $ECHO_C" >&6.
2670: 2b 65 6c 73 65 0a 2b 20 20 63 61 74 20 3e 63 6f +else.+ cat >co
2680: 6e 66 74 65 73 74 2e 24 61 63 5f 65 78 74 20 3c nftest.$ac_ext <
2690: 3c 5f 41 43 45 4f 46 0a 2b 2f 2a 20 63 6f 6e 66 <_ACEOF.+/* conf
26a0: 64 65 66 73 2e 68 2e 20 20 2a 2f 0a 2b 5f 41 43 defs.h. */.+_AC
26b0: 45 4f 46 0a 2b 63 61 74 20 63 6f 6e 66 64 65 66 EOF.+cat confdef
26c0: 73 2e 68 20 3e 3e 63 6f 6e 66 74 65 73 74 2e 24 s.h >>conftest.$
26d0: 61 63 5f 65 78 74 0a 2b 63 61 74 20 3e 3e 63 6f ac_ext.+cat >>co
26e0: 6e 66 74 65 73 74 2e 24 61 63 5f 65 78 74 20 3c nftest.$ac_ext <
26f0: 3c 5f 41 43 45 4f 46 0a 2b 2f 2a 20 65 6e 64 20 <_ACEOF.+/* end
2700: 63 6f 6e 66 64 65 66 73 2e 68 2e 20 20 2a 2f 0a confdefs.h. */.
2710: 2b 2f 2a 20 44 65 66 69 6e 65 20 24 61 63 5f 66 +/* Define $ac_f
2720: 75 6e 63 20 74 6f 20 61 6e 20 69 6e 6e 6f 63 75 unc to an innocu
2730: 6f 75 73 20 76 61 72 69 61 6e 74 2c 20 69 6e 20 ous variant, in
2740: 63 61 73 65 20 3c 6c 69 6d 69 74 73 2e 68 3e 20 case <limits.h>
2750: 64 65 63 6c 61 72 65 73 20 24 61 63 5f 66 75 6e declares $ac_fun
2760: 63 2e 0a 2b 20 20 20 46 6f 72 20 65 78 61 6d 70 c..+ For examp
2770: 6c 65 2c 20 48 50 2d 55 58 20 31 31 69 20 3c 6c le, HP-UX 11i <l
2780: 69 6d 69 74 73 2e 68 3e 20 64 65 63 6c 61 72 65 imits.h> declare
2790: 73 20 67 65 74 74 69 6d 65 6f 66 64 61 79 2e 20 s gettimeofday.
27a0: 20 2a 2f 0a 2b 23 64 65 66 69 6e 65 20 24 61 63 */.+#define $ac
27b0: 5f 66 75 6e 63 20 69 6e 6e 6f 63 75 6f 75 73 5f _func innocuous_
27c0: 24 61 63 5f 66 75 6e 63 0a 2b 0a 2b 2f 2a 20 53 $ac_func.+.+/* S
27d0: 79 73 74 65 6d 20 68 65 61 64 65 72 20 74 6f 20 ystem header to
27e0: 64 65 66 69 6e 65 20 5f 5f 73 74 75 62 20 6d 61 define __stub ma
27f0: 63 72 6f 73 20 61 6e 64 20 68 6f 70 65 66 75 6c cros and hopeful
2800: 6c 79 20 66 65 77 20 70 72 6f 74 6f 74 79 70 65 ly few prototype
2810: 73 2c 0a 2b 20 20 20 20 77 68 69 63 68 20 63 61 s,.+ which ca
2820: 6e 20 63 6f 6e 66 6c 69 63 74 20 77 69 74 68 20 n conflict with
2830: 63 68 61 72 20 24 61 63 5f 66 75 6e 63 20 28 29 char $ac_func ()
2840: 3b 20 62 65 6c 6f 77 2e 0a 2b 20 20 20 20 50 72 ; below..+ Pr
2850: 65 66 65 72 20 3c 6c 69 6d 69 74 73 2e 68 3e 20 efer <limits.h>
2860: 74 6f 20 3c 61 73 73 65 72 74 2e 68 3e 20 69 66 to <assert.h> if
2870: 20 5f 5f 53 54 44 43 5f 5f 20 69 73 20 64 65 66 __STDC__ is def
2880: 69 6e 65 64 2c 20 73 69 6e 63 65 0a 2b 20 20 20 ined, since.+
2890: 20 3c 6c 69 6d 69 74 73 2e 68 3e 20 65 78 69 73 <limits.h> exis
28a0: 74 73 20 65 76 65 6e 20 6f 6e 20 66 72 65 65 73 ts even on frees
28b0: 74 61 6e 64 69 6e 67 20 63 6f 6d 70 69 6c 65 72 tanding compiler
28c0: 73 2e 20 20 2a 2f 0a 2b 0a 2b 23 69 66 64 65 66 s. */.+.+#ifdef
28d0: 20 5f 5f 53 54 44 43 5f 5f 0a 2b 23 20 69 6e 63 __STDC__.+# inc
28e0: 6c 75 64 65 20 3c 6c 69 6d 69 74 73 2e 68 3e 0a lude <limits.h>.
28f0: 2b 23 65 6c 73 65 0a 2b 23 20 69 6e 63 6c 75 64 +#else.+# includ
2900: 65 20 3c 61 73 73 65 72 74 2e 68 3e 0a 2b 23 65 e <assert.h>.+#e
2910: 6e 64 69 66 0a 2b 0a 2b 23 75 6e 64 65 66 20 24 ndif.+.+#undef $
2920: 61 63 5f 66 75 6e 63 0a 2b 0a 2b 2f 2a 20 4f 76 ac_func.+.+/* Ov
2930: 65 72 72 69 64 65 20 61 6e 79 20 67 63 63 32 20 erride any gcc2
2940: 69 6e 74 65 72 6e 61 6c 20 70 72 6f 74 6f 74 79 internal prototy
2950: 70 65 20 74 6f 20 61 76 6f 69 64 20 61 6e 20 65 pe to avoid an e
2960: 72 72 6f 72 2e 20 20 2a 2f 0a 2b 23 69 66 64 65 rror. */.+#ifde
2970: 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a 2b 65 f __cplusplus.+e
2980: 78 74 65 72 6e 20 22 43 22 0a 2b 7b 0a 2b 23 65 xtern "C".+{.+#e
2990: 6e 64 69 66 0a 2b 2f 2a 20 57 65 20 75 73 65 20 ndif.+/* We use
29a0: 63 68 61 72 20 62 65 63 61 75 73 65 20 69 6e 74 char because int
29b0: 20 6d 69 67 68 74 20 6d 61 74 63 68 20 74 68 65 might match the
29c0: 20 72 65 74 75 72 6e 20 74 79 70 65 20 6f 66 20 return type of
29d0: 61 20 67 63 63 32 0a 2b 20 20 20 62 75 69 6c 74 a gcc2.+ built
29e0: 69 6e 20 61 6e 64 20 74 68 65 6e 20 69 74 73 20 in and then its
29f0: 61 72 67 75 6d 65 6e 74 20 70 72 6f 74 6f 74 79 argument prototy
2a00: 70 65 20 77 6f 75 6c 64 20 73 74 69 6c 6c 20 61 pe would still a
2a10: 70 70 6c 79 2e 20 20 2a 2f 0a 2b 63 68 61 72 20 pply. */.+char
2a20: 24 61 63 5f 66 75 6e 63 20 28 29 3b 0a 2b 2f 2a $ac_func ();.+/*
2a30: 20 54 68 65 20 47 4e 55 20 43 20 6c 69 62 72 61 The GNU C libra
2a40: 72 79 20 64 65 66 69 6e 65 73 20 74 68 69 73 20 ry defines this
2a50: 66 6f 72 20 66 75 6e 63 74 69 6f 6e 73 20 77 68 for functions wh
2a60: 69 63 68 20 69 74 20 69 6d 70 6c 65 6d 65 6e 74 ich it implement
2a70: 73 0a 2b 20 20 20 20 74 6f 20 61 6c 77 61 79 73 s.+ to always
2a80: 20 66 61 69 6c 20 77 69 74 68 20 45 4e 4f 53 59 fail with ENOSY
2a90: 53 2e 20 20 53 6f 6d 65 20 66 75 6e 63 74 69 6f S. Some functio
2aa0: 6e 73 20 61 72 65 20 61 63 74 75 61 6c 6c 79 20 ns are actually
2ab0: 6e 61 6d 65 64 0a 2b 20 20 20 20 73 6f 6d 65 74 named.+ somet
2ac0: 68 69 6e 67 20 73 74 61 72 74 69 6e 67 20 77 69 hing starting wi
2ad0: 74 68 20 5f 5f 20 61 6e 64 20 74 68 65 20 6e 6f th __ and the no
2ae0: 72 6d 61 6c 20 6e 61 6d 65 20 69 73 20 61 6e 20 rmal name is an
2af0: 61 6c 69 61 73 2e 20 20 2a 2f 0a 2b 23 69 66 20 alias. */.+#if
2b00: 64 65 66 69 6e 65 64 20 28 5f 5f 73 74 75 62 5f defined (__stub_
2b10: 24 61 63 5f 66 75 6e 63 29 20 7c 7c 20 64 65 66 $ac_func) || def
2b20: 69 6e 65 64 20 28 5f 5f 73 74 75 62 5f 5f 5f 24 ined (__stub___$
2b30: 61 63 5f 66 75 6e 63 29 0a 2b 63 68 6f 6b 65 20 ac_func).+choke
2b40: 6d 65 0a 2b 23 65 6c 73 65 0a 2b 63 68 61 72 20 me.+#else.+char
2b50: 28 2a 66 29 20 28 29 20 3d 20 24 61 63 5f 66 75 (*f) () = $ac_fu
2b60: 6e 63 3b 0a 2b 23 65 6e 64 69 66 0a 2b 23 69 66 nc;.+#endif.+#if
2b70: 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0a def __cplusplus.
2b80: 2b 7d 0a 2b 23 65 6e 64 69 66 0a 2b 0a 2b 69 6e +}.+#endif.+.+in
2b90: 74 0a 2b 6d 61 69 6e 20 28 29 0a 2b 7b 0a 2b 72 t.+main ().+{.+r
2ba0: 65 74 75 72 6e 20 66 20 21 3d 20 24 61 63 5f 66 eturn f != $ac_f
2bb0: 75 6e 63 3b 0a 2b 20 20 3b 0a 2b 20 20 72 65 74 unc;.+ ;.+ ret
2bc0: 75 72 6e 20 30 3b 0a 2b 7d 0a 2b 5f 41 43 45 4f urn 0;.+}.+_ACEO
2bd0: 46 0a 2b 72 6d 20 2d 66 20 63 6f 6e 66 74 65 73 F.+rm -f conftes
2be0: 74 2e 24 61 63 5f 6f 62 6a 65 78 74 20 63 6f 6e t.$ac_objext con
2bf0: 66 74 65 73 74 24 61 63 5f 65 78 65 65 78 74 0a ftest$ac_exeext.
2c00: 2b 69 66 20 7b 20 28 65 76 61 6c 20 65 63 68 6f +if { (eval echo
2c10: 20 22 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f "$as_me:$LINENO
2c20: 3a 20 5c 22 24 61 63 5f 6c 69 6e 6b 5c 22 22 29 : \"$ac_link\"")
2c30: 20 3e 26 35 0a 2b 20 20 28 65 76 61 6c 20 24 61 >&5.+ (eval $a
2c40: 63 5f 6c 69 6e 6b 29 20 32 3e 63 6f 6e 66 74 65 c_link) 2>confte
2c50: 73 74 2e 65 72 31 0a 2b 20 20 61 63 5f 73 74 61 st.er1.+ ac_sta
2c60: 74 75 73 3d 24 3f 0a 2b 20 20 67 72 65 70 20 2d tus=$?.+ grep -
2c70: 76 20 27 5e 20 2a 2b 27 20 63 6f 6e 66 74 65 73 v '^ *+' conftes
2c80: 74 2e 65 72 31 20 3e 63 6f 6e 66 74 65 73 74 2e t.er1 >conftest.
2c90: 65 72 72 0a 2b 20 20 72 6d 20 2d 66 20 63 6f 6e err.+ rm -f con
2ca0: 66 74 65 73 74 2e 65 72 31 0a 2b 20 20 63 61 74 ftest.er1.+ cat
2cb0: 20 63 6f 6e 66 74 65 73 74 2e 65 72 72 20 3e 26 conftest.err >&
2cc0: 35 0a 2b 20 20 65 63 68 6f 20 22 24 61 73 5f 6d 5.+ echo "$as_m
2cd0: 65 3a 24 4c 49 4e 45 4e 4f 3a 20 5c 24 3f 20 3d e:$LINENO: \$? =
2ce0: 20 24 61 63 5f 73 74 61 74 75 73 22 20 3e 26 35 $ac_status" >&5
2cf0: 0a 2b 20 20 28 65 78 69 74 20 24 61 63 5f 73 74 .+ (exit $ac_st
2d00: 61 74 75 73 29 3b 20 7d 20 26 26 0a 2b 09 20 7b atus); } &&.+. {
2d10: 20 61 63 5f 74 72 79 3d 27 74 65 73 74 20 2d 7a ac_try='test -z
2d20: 20 22 24 61 63 5f 63 5f 77 65 72 72 6f 72 5f 66 "$ac_c_werror_f
2d30: 6c 61 67 22 0a 2b 09 09 09 20 7c 7c 20 74 65 73 lag".+... || tes
2d40: 74 20 21 20 2d 73 20 63 6f 6e 66 74 65 73 74 2e t ! -s conftest.
2d50: 65 72 72 27 0a 2b 20 20 7b 20 28 65 76 61 6c 20 err'.+ { (eval
2d60: 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 echo "$as_me:$LI
2d70: 4e 45 4e 4f 3a 20 5c 22 24 61 63 5f 74 72 79 5c NENO: \"$ac_try\
2d80: 22 22 29 20 3e 26 35 0a 2b 20 20 28 65 76 61 6c "") >&5.+ (eval
2d90: 20 24 61 63 5f 74 72 79 29 20 32 3e 26 35 0a 2b $ac_try) 2>&5.+
2da0: 20 20 61 63 5f 73 74 61 74 75 73 3d 24 3f 0a 2b ac_status=$?.+
2db0: 20 20 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 echo "$as_me:$
2dc0: 4c 49 4e 45 4e 4f 3a 20 5c 24 3f 20 3d 20 24 61 LINENO: \$? = $a
2dd0: 63 5f 73 74 61 74 75 73 22 20 3e 26 35 0a 2b 20 c_status" >&5.+
2de0: 20 28 65 78 69 74 20 24 61 63 5f 73 74 61 74 75 (exit $ac_statu
2df0: 73 29 3b 20 7d 3b 20 7d 20 26 26 0a 2b 09 20 7b s); }; } &&.+. {
2e00: 20 61 63 5f 74 72 79 3d 27 74 65 73 74 20 2d 73 ac_try='test -s
2e10: 20 63 6f 6e 66 74 65 73 74 24 61 63 5f 65 78 65 conftest$ac_exe
2e20: 65 78 74 27 0a 2b 20 20 7b 20 28 65 76 61 6c 20 ext'.+ { (eval
2e30: 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 echo "$as_me:$LI
2e40: 4e 45 4e 4f 3a 20 5c 22 24 61 63 5f 74 72 79 5c NENO: \"$ac_try\
2e50: 22 22 29 20 3e 26 35 0a 2b 20 20 28 65 76 61 6c "") >&5.+ (eval
2e60: 20 24 61 63 5f 74 72 79 29 20 32 3e 26 35 0a 2b $ac_try) 2>&5.+
2e70: 20 20 61 63 5f 73 74 61 74 75 73 3d 24 3f 0a 2b ac_status=$?.+
2e80: 20 20 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 echo "$as_me:$
2e90: 4c 49 4e 45 4e 4f 3a 20 5c 24 3f 20 3d 20 24 61 LINENO: \$? = $a
2ea0: 63 5f 73 74 61 74 75 73 22 20 3e 26 35 0a 2b 20 c_status" >&5.+
2eb0: 20 28 65 78 69 74 20 24 61 63 5f 73 74 61 74 75 (exit $ac_statu
2ec0: 73 29 3b 20 7d 3b 20 7d 3b 20 74 68 65 6e 0a 2b s); }; }; then.+
2ed0: 20 20 65 76 61 6c 20 22 24 61 73 5f 61 63 5f 76 eval "$as_ac_v
2ee0: 61 72 3d 79 65 73 22 0a 2b 65 6c 73 65 0a 2b 20 ar=yes".+else.+
2ef0: 20 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 20 66 echo "$as_me: f
2f00: 61 69 6c 65 64 20 70 72 6f 67 72 61 6d 20 77 61 ailed program wa
2f10: 73 3a 22 20 3e 26 35 0a 2b 73 65 64 20 27 73 2f s:" >&5.+sed 's/
2f20: 5e 2f 7c 20 2f 27 20 63 6f 6e 66 74 65 73 74 2e ^/| /' conftest.
2f30: 24 61 63 5f 65 78 74 20 3e 26 35 0a 2b 0a 2b 65 $ac_ext >&5.+.+e
2f40: 76 61 6c 20 22 24 61 73 5f 61 63 5f 76 61 72 3d val "$as_ac_var=
2f50: 6e 6f 22 0a 2b 66 69 0a 2b 72 6d 20 2d 66 20 63 no".+fi.+rm -f c
2f60: 6f 6e 66 74 65 73 74 2e 65 72 72 20 63 6f 6e 66 onftest.err conf
2f70: 74 65 73 74 2e 24 61 63 5f 6f 62 6a 65 78 74 20 test.$ac_objext
2f80: 5c 0a 2b 20 20 20 20 20 20 63 6f 6e 66 74 65 73 \.+ conftes
2f90: 74 24 61 63 5f 65 78 65 65 78 74 20 63 6f 6e 66 t$ac_exeext conf
2fa0: 74 65 73 74 2e 24 61 63 5f 65 78 74 0a 2b 66 69 test.$ac_ext.+fi
2fb0: 0a 2b 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 .+echo "$as_me:$
2fc0: 4c 49 4e 45 4e 4f 3a 20 72 65 73 75 6c 74 3a 20 LINENO: result:
2fd0: 60 65 76 61 6c 20 65 63 68 6f 20 27 24 7b 27 24 `eval echo '${'$
2fe0: 61 73 5f 61 63 5f 76 61 72 27 7d 27 60 22 20 3e as_ac_var'}'`" >
2ff0: 26 35 0a 2b 65 63 68 6f 20 22 24 7b 45 43 48 4f &5.+echo "${ECHO
3000: 5f 54 7d 60 65 76 61 6c 20 65 63 68 6f 20 27 24 _T}`eval echo '$
3010: 7b 27 24 61 73 5f 61 63 5f 76 61 72 27 7d 27 60 {'$as_ac_var'}'`
3020: 22 20 3e 26 36 0a 2b 69 66 20 74 65 73 74 20 60 " >&6.+if test `
3030: 65 76 61 6c 20 65 63 68 6f 20 27 24 7b 27 24 61 eval echo '${'$a
3040: 73 5f 61 63 5f 76 61 72 27 7d 27 60 20 3d 20 79 s_ac_var'}'` = y
3050: 65 73 3b 20 74 68 65 6e 0a 2b 20 20 63 61 74 20 es; then.+ cat
3060: 3e 3e 63 6f 6e 66 64 65 66 73 2e 68 20 3c 3c 5f >>confdefs.h <<_
3070: 41 43 45 4f 46 0a 2b 23 64 65 66 69 6e 65 20 60 ACEOF.+#define `
3080: 65 63 68 6f 20 22 48 41 56 45 5f 24 61 63 5f 66 echo "HAVE_$ac_f
3090: 75 6e 63 22 20 7c 20 24 61 73 5f 74 72 5f 63 70 unc" | $as_tr_cp
30a0: 70 60 20 31 0a 2b 5f 41 43 45 4f 46 0a 2b 0a 2b p` 1.+_ACEOF.+.+
30b0: 66 69 0a 2b 64 6f 6e 65 0a 2b 0a 20 0a 20 0a 20 fi.+done.+. . .
30c0: 23 20 41 64 64 20 74 68 65 20 74 68 72 65 61 64 # Add the thread
30d0: 73 20 73 75 70 70 6f 72 74 20 6c 69 62 72 61 72 s support librar
30e0: 69 65 73 0a 20 4c 49 42 53 3d 22 24 4c 49 42 53 ies. LIBS="$LIBS
30f0: 24 54 48 52 45 41 44 53 5f 4c 49 42 53 22 0a 20 $THREADS_LIBS".
3100: 0a 0a 49 6e 64 65 78 3a 20 75 6e 69 78 2f 74 63 ..Index: unix/tc
3110: 6c 2e 6d 34 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d l.m4.===========
3120: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3130: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3140: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3150: 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 78 =======.--- unix
3160: 2f 74 63 6c 2e 6d 34 0a 2b 2b 2b 20 75 6e 69 78 /tcl.m4.+++ unix
3170: 2f 74 63 6c 2e 6d 34 0a 40 40 20 2d 36 37 36 2c /tcl.m4.@@ -676,
3180: 31 31 20 2b 36 37 36 2c 31 31 20 40 40 0a 20 09 11 +676,11 @@. .
3190: 23 20 44 6f 65 73 20 74 68 65 20 70 74 68 72 65 # Does the pthre
31a0: 61 64 2d 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f ad-implementatio
31b0: 6e 20 70 72 6f 76 69 64 65 0a 20 09 23 20 27 70 n provide. .# 'p
31c0: 74 68 72 65 61 64 5f 61 74 74 72 5f 73 65 74 73 thread_attr_sets
31d0: 74 61 63 6b 73 69 7a 65 27 20 3f 0a 20 0a 20 09 tacksize' ?. . .
31e0: 61 63 5f 73 61 76 65 64 5f 6c 69 62 73 3d 24 4c ac_saved_libs=$L
31f0: 49 42 53 0a 20 09 4c 49 42 53 3d 22 24 4c 49 42 IBS. .LIBS="$LIB
3200: 53 20 24 54 48 52 45 41 44 53 5f 4c 49 42 53 22 S $THREADS_LIBS"
3210: 0a 2d 09 41 43 5f 43 48 45 43 4b 5f 46 55 4e 43 .-.AC_CHECK_FUNC
3220: 53 28 70 74 68 72 65 61 64 5f 61 74 74 72 5f 73 S(pthread_attr_s
3230: 65 74 73 74 61 63 6b 73 69 7a 65 20 70 74 68 72 etstacksize pthr
3240: 65 61 64 5f 61 74 66 6f 72 6b 29 0a 2b 09 41 43 ead_atfork).+.AC
3250: 5f 43 48 45 43 4b 5f 46 55 4e 43 53 28 70 74 68 _CHECK_FUNCS(pth
3260: 72 65 61 64 5f 61 74 74 72 5f 73 65 74 73 74 61 read_attr_setsta
3270: 63 6b 73 69 7a 65 20 70 74 68 72 65 61 64 5f 61 cksize pthread_a
3280: 74 66 6f 72 6b 20 70 74 68 72 65 61 64 5f 63 6f tfork pthread_co
3290: 6e 64 61 74 74 72 5f 73 65 74 63 6c 6f 63 6b 29 ndattr_setclock)
32a0: 0a 20 09 4c 49 42 53 3d 24 61 63 5f 73 61 76 65 . .LIBS=$ac_save
32b0: 64 5f 6c 69 62 73 0a 20 20 20 20 20 65 6c 73 65 d_libs. else
32c0: 0a 20 09 54 43 4c 5f 54 48 52 45 41 44 53 3d 30 . .TCL_THREADS=0
32d0: 0a 20 20 20 20 20 66 69 0a 20 20 20 20 20 23 20 . fi. #
32e0: 44 6f 20 63 68 65 63 6b 69 6e 67 20 6d 65 73 73 Do checking mess
32f0: 61 67 65 20 68 65 72 65 20 74 6f 20 6e 6f 74 20 age here to not
3300: 6d 65 73 73 20 75 70 20 69 6e 74 65 72 6c 65 61 mess up interlea
3310: 76 65 64 20 63 6f 6e 66 69 67 75 72 65 20 6f 75 ved configure ou
3320: 74 70 75 74 0a 40 40 20 2d 32 35 33 37 2c 31 30 tput.@@ -2537,10
3330: 20 2b 32 35 33 37 2c 31 33 20 40 40 0a 20 09 4c +2537,13 @@. .L
3340: 49 42 53 3d 22 24 4c 49 42 53 20 2d 6c 73 6f 63 IBS="$LIBS -lsoc
3350: 6b 65 74 20 2d 6c 6e 73 6c 22 0a 20 09 41 43 5f ket -lnsl". .AC_
3360: 43 48 45 43 4b 5f 46 55 4e 43 28 61 63 63 65 70 CHECK_FUNC(accep
3370: 74 2c 20 74 63 6c 5f 63 68 65 63 6b 4e 73 6c 3d t, tcl_checkNsl=
3380: 30 2c 20 5b 4c 49 42 53 3d 24 74 6b 5f 6f 6c 64 0, [LIBS=$tk_old
3390: 4c 69 62 73 5d 29 0a 20 20 20 20 20 66 69 0a 20 Libs]). fi.
33a0: 20 20 20 20 41 43 5f 43 48 45 43 4b 5f 46 55 4e AC_CHECK_FUN
33b0: 43 28 67 65 74 68 6f 73 74 62 79 6e 61 6d 65 2c C(gethostbyname,
33c0: 20 2c 20 5b 41 43 5f 43 48 45 43 4b 5f 4c 49 42 , [AC_CHECK_LIB
33d0: 28 6e 73 6c 2c 20 67 65 74 68 6f 73 74 62 79 6e (nsl, gethostbyn
33e0: 61 6d 65 2c 0a 20 09 20 20 20 20 5b 4c 49 42 53 ame,. . [LIBS
33f0: 3d 22 24 4c 49 42 53 20 2d 6c 6e 73 6c 22 5d 29 ="$LIBS -lnsl"])
3400: 5d 29 0a 2b 0a 2b 20 20 20 20 41 43 5f 43 48 45 ]).+.+ AC_CHE
3410: 43 4b 5f 4c 49 42 28 72 74 2c 20 63 6c 6f 63 6b CK_LIB(rt, clock
3420: 5f 67 65 74 74 69 6d 65 2c 20 5b 4c 49 42 53 3d _gettime, [LIBS=
3430: 22 24 4c 49 42 53 20 2d 6c 72 74 22 5d 29 0a 2b "$LIBS -lrt"]).+
3440: 20 20 20 20 41 43 5f 43 48 45 43 4b 5f 46 55 4e AC_CHECK_FUN
3450: 43 53 28 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 CS(clock_gettime
3460: 20 63 6c 6f 63 6b 5f 6e 61 6e 6f 73 6c 65 65 70 clock_nanosleep
3470: 29 0a 20 5d 29 0a 20 0a 20 23 2d 2d 2d 2d 2d 2d ). ]). . #------
3480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
3490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
34a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
34b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 --------------.
34c0: 23 20 53 43 5f 54 43 4c 5f 45 41 52 4c 59 5f 46 # SC_TCL_EARLY_F
34d0: 4c 41 47 53 0a 20 23 0a 0a 49 6e 64 65 78 3a 20 LAGS. #..Index:
34e0: 75 6e 69 78 2f 74 63 6c 43 6f 6e 66 69 67 2e 68 unix/tclConfig.h
34f0: 2e 69 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .in.============
3500: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3510: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3520: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3530: 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 78 2f ======.--- unix/
3540: 74 63 6c 43 6f 6e 66 69 67 2e 68 2e 69 6e 0a 2b tclConfig.h.in.+
3550: 2b 2b 20 75 6e 69 78 2f 74 63 6c 43 6f 6e 66 69 ++ unix/tclConfi
3560: 67 2e 68 2e 69 6e 0a 40 40 20 2d 31 36 2c 31 30 g.h.in.@@ -16,10
3570: 20 2b 31 36 2c 31 33 20 40 40 0a 20 2f 2a 20 44 +16,13 @@. /* D
3580: 65 66 69 6e 65 64 20 77 68 65 6e 20 63 6f 6d 70 efined when comp
3590: 69 6c 65 72 20 73 75 70 70 6f 72 74 73 20 63 61 iler supports ca
35a0: 73 74 69 6e 67 20 74 6f 20 75 6e 69 6f 6e 20 74 sting to union t
35b0: 79 70 65 2e 20 2a 2f 0a 20 23 75 6e 64 65 66 20 ype. */. #undef
35c0: 48 41 56 45 5f 43 41 53 54 5f 54 4f 5f 55 4e 49 HAVE_CAST_TO_UNI
35d0: 4f 4e 0a 20 0a 20 2f 2a 20 44 65 66 69 6e 65 20 ON. . /* Define
35e0: 74 6f 20 31 20 69 66 20 79 6f 75 20 68 61 76 65 to 1 if you have
35f0: 20 74 68 65 20 60 63 68 66 6c 61 67 73 27 20 66 the `chflags' f
3600: 75 6e 63 74 69 6f 6e 2e 20 2a 2f 0a 20 23 75 6e unction. */. #un
3610: 64 65 66 20 48 41 56 45 5f 43 48 46 4c 41 47 53 def HAVE_CHFLAGS
3620: 0a 2b 0a 2b 2f 2a 20 44 65 66 69 6e 65 20 74 6f .+.+/* Define to
3630: 20 31 20 69 66 20 79 6f 75 20 68 61 76 65 20 74 1 if you have t
3640: 68 65 20 60 63 6c 6f 63 6b 5f 67 65 74 74 69 6d he `clock_gettim
3650: 65 27 20 66 75 6e 63 74 69 6f 6e 2e 20 2a 2f 0a e' function. */.
3660: 2b 23 75 6e 64 65 66 20 48 41 56 45 5f 43 4c 4f +#undef HAVE_CLO
3670: 43 4b 5f 47 45 54 54 49 4d 45 0a 20 0a 20 2f 2a CK_GETTIME. . /*
3680: 20 44 65 66 69 6e 65 20 74 6f 20 31 20 69 66 20 Define to 1 if
3690: 79 6f 75 20 68 61 76 65 20 74 68 65 20 60 63 6f you have the `co
36a0: 70 79 66 69 6c 65 27 20 66 75 6e 63 74 69 6f 6e pyfile' function
36b0: 2e 20 2a 2f 0a 20 23 75 6e 64 65 66 20 48 41 56 . */. #undef HAV
36c0: 45 5f 43 4f 50 59 46 49 4c 45 0a 20 0a 20 2f 2a E_COPYFILE. . /*
36d0: 20 44 65 66 69 6e 65 20 74 6f 20 31 20 69 66 20 Define to 1 if
36e0: 79 6f 75 20 68 61 76 65 20 74 68 65 20 3c 63 6f you have the <co
36f0: 70 79 66 69 6c 65 2e 68 3e 20 68 65 61 64 65 72 pyfile.h> header
3700: 20 66 69 6c 65 2e 20 2a 2f 0a 40 40 20 2d 31 36 file. */.@@ -16
3710: 36 2c 31 30 20 2b 31 36 39 2c 31 33 20 40 40 0a 6,10 +169,13 @@.
3720: 20 2f 2a 20 44 65 66 69 6e 65 20 74 6f 20 31 20 /* Define to 1
3730: 69 66 20 79 6f 75 20 68 61 76 65 20 74 68 65 20 if you have the
3740: 60 70 74 68 72 65 61 64 5f 61 74 66 6f 72 6b 27 `pthread_atfork'
3750: 20 66 75 6e 63 74 69 6f 6e 2e 20 2a 2f 0a 20 23 function. */. #
3760: 75 6e 64 65 66 20 48 41 56 45 5f 50 54 48 52 45 undef HAVE_PTHRE
3770: 41 44 5f 41 54 46 4f 52 4b 0a 20 0a 20 2f 2a 20 AD_ATFORK. . /*
3780: 44 65 66 69 6e 65 20 74 6f 20 31 20 69 66 20 79 Define to 1 if y
3790: 6f 75 20 68 61 76 65 20 74 68 65 20 60 70 74 68 ou have the `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 27 20 66 75 6e 63 74 69 6f 6e cksize' function
37c0: 2e 20 2a 2f 0a 20 23 75 6e 64 65 66 20 48 41 56 . */. #undef HAV
37d0: 45 5f 50 54 48 52 45 41 44 5f 41 54 54 52 5f 53 E_PTHREAD_ATTR_S
37e0: 45 54 53 54 41 43 4b 53 49 5a 45 0a 2b 0a 2b 2f ETSTACKSIZE.+.+/
37f0: 2a 20 44 65 66 69 6e 65 20 74 6f 20 31 20 69 66 * Define to 1 if
3800: 20 79 6f 75 20 68 61 76 65 20 74 68 65 20 60 70 you have the `p
3810: 74 68 72 65 61 64 5f 63 6f 6e 64 61 74 74 72 5f thread_condattr_
3820: 73 65 74 63 6c 6f 63 6b 27 20 66 75 6e 63 74 69 setclock' functi
3830: 6f 6e 2e 20 2a 2f 0a 2b 23 75 6e 64 65 66 20 48 on. */.+#undef H
3840: 41 56 45 5f 50 54 48 52 45 41 44 5f 43 4f 4e 44 AVE_PTHREAD_COND
3850: 41 54 54 52 5f 53 45 54 43 4c 4f 43 4b 0a 20 0a ATTR_SETCLOCK. .
3860: 20 2f 2a 20 44 6f 65 73 20 70 75 74 65 6e 76 28 /* Does putenv(
3870: 29 20 63 6f 70 79 20 73 74 72 69 6e 67 73 20 6f ) copy strings o
3880: 72 20 69 6e 63 6f 72 70 6f 72 61 74 65 20 74 68 r incorporate th
3890: 65 6d 20 62 79 20 72 65 66 65 72 65 6e 63 65 3f em by reference?
38a0: 20 2a 2f 0a 20 23 75 6e 64 65 66 20 48 41 56 45 */. #undef HAVE
38b0: 5f 50 55 54 45 4e 56 5f 54 48 41 54 5f 43 4f 50 _PUTENV_THAT_COP
38c0: 49 45 53 0a 20 0a 20 2f 2a 20 41 72 65 20 63 68 IES. . /* Are ch
38d0: 61 72 61 63 74 65 72 73 20 73 69 67 6e 65 64 3f aracters signed?
38e0: 20 2a 2f 0a 0a 49 6e 64 65 78 3a 20 75 6e 69 78 */..Index: unix
38f0: 2f 74 63 6c 55 6e 69 78 43 68 61 6e 2e 63 0a 3d /tclUnixChan.c.=
3900: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3910: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3920: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3930: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3940: 3d 0a 2d 2d 2d 20 75 6e 69 78 2f 74 63 6c 55 6e =.--- unix/tclUn
3950: 69 78 43 68 61 6e 2e 63 0a 2b 2b 2b 20 75 6e 69 ixChan.c.+++ uni
3960: 78 2f 74 63 6c 55 6e 69 78 43 68 61 6e 2e 63 0a x/tclUnixChan.c.
3970: 40 40 20 2d 31 37 38 35 2c 31 31 20 2b 31 37 38 @@ -1785,11 +178
3980: 35 2c 31 31 20 40 40 0a 20 20 20 20 20 20 2a 20 5,11 @@. *
3990: 49 66 20 74 68 65 72 65 20 69 73 20 61 20 6e 6f If there is a no
39a0: 6e 2d 7a 65 72 6f 20 66 69 6e 69 74 65 20 74 69 n-zero finite ti
39b0: 6d 65 6f 75 74 2c 20 63 6f 6d 70 75 74 65 20 74 meout, compute t
39c0: 68 65 20 74 69 6d 65 20 77 68 65 6e 20 77 65 20 he time when we
39d0: 67 69 76 65 0a 20 20 20 20 20 20 2a 20 75 70 2e give. * up.
39e0: 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20 20 20 20 . */. .
39f0: 20 69 66 20 28 74 69 6d 65 6f 75 74 20 3e 20 30 if (timeout > 0
3a00: 29 20 7b 0a 2d 09 54 63 6c 5f 47 65 74 54 69 6d ) {.-.Tcl_GetTim
3a10: 65 28 26 6e 6f 77 29 3b 0a 2b 09 54 63 6c 70 47 e(&now);.+.TclpG
3a20: 65 74 4d 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 28 etMonotonicTime(
3a30: 26 6e 6f 77 29 3b 0a 20 09 61 62 6f 72 74 54 69 &now);. .abortTi
3a40: 6d 65 2e 73 65 63 20 3d 20 6e 6f 77 2e 73 65 63 me.sec = now.sec
3a50: 20 2b 20 74 69 6d 65 6f 75 74 2f 31 30 30 30 3b + timeout/1000;
3a60: 0a 20 09 61 62 6f 72 74 54 69 6d 65 2e 75 73 65 . .abortTime.use
3a70: 63 20 3d 20 6e 6f 77 2e 75 73 65 63 20 2b 20 28 c = now.usec + (
3a80: 74 69 6d 65 6f 75 74 25 31 30 30 30 29 2a 31 30 timeout%1000)*10
3a90: 30 30 3b 0a 20 09 69 66 20 28 61 62 6f 72 74 54 00;. .if (abortT
3aa0: 69 6d 65 2e 75 73 65 63 20 3e 3d 20 31 30 30 30 ime.usec >= 1000
3ab0: 30 30 30 29 20 7b 0a 20 09 20 20 20 20 61 62 6f 000) {. . abo
3ac0: 72 74 54 69 6d 65 2e 75 73 65 63 20 2d 3d 20 31 rtTime.usec -= 1
3ad0: 30 30 30 30 30 30 3b 0a 20 09 20 20 20 20 61 62 000000;. . ab
3ae0: 6f 72 74 54 69 6d 65 2e 73 65 63 20 2b 3d 20 31 ortTime.sec += 1
3af0: 3b 0a 40 40 20 2d 31 38 37 34 2c 31 31 20 2b 31 ;.@@ -1874,11 +1
3b00: 38 37 34 2c 31 31 20 40 40 0a 20 0a 20 09 2f 2a 874,11 @@. . ./*
3b10: 0a 20 09 20 2a 20 54 68 65 20 73 65 6c 65 63 74 . . * The select
3b20: 20 72 65 74 75 72 6e 65 64 20 65 61 72 6c 79 2c returned early,
3b30: 20 73 6f 20 77 65 20 6e 65 65 64 20 74 6f 20 72 so we need to r
3b40: 65 63 6f 6d 70 75 74 65 20 74 68 65 20 74 69 6d ecompute the tim
3b50: 65 6f 75 74 2e 0a 20 09 20 2a 2f 0a 20 0a 2d 09 eout.. . */. .-.
3b60: 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 6e 6f 77 Tcl_GetTime(&now
3b70: 29 3b 0a 2b 09 54 63 6c 70 47 65 74 4d 6f 6e 6f );.+.TclpGetMono
3b80: 74 6f 6e 69 63 54 69 6d 65 28 26 6e 6f 77 29 3b tonicTime(&now);
3b90: 0a 20 09 69 66 20 28 28 61 62 6f 72 74 54 69 6d . .if ((abortTim
3ba0: 65 2e 73 65 63 20 3c 20 6e 6f 77 2e 73 65 63 29 e.sec < now.sec)
3bb0: 0a 20 09 09 7c 7c 20 28 61 62 6f 72 74 54 69 6d . ..|| (abortTim
3bc0: 65 2e 73 65 63 3d 3d 6e 6f 77 2e 73 65 63 20 26 e.sec==now.sec &
3bd0: 26 20 61 62 6f 72 74 54 69 6d 65 2e 75 73 65 63 & abortTime.usec
3be0: 3c 3d 6e 6f 77 2e 75 73 65 63 29 29 20 7b 0a 20 <=now.usec)) {.
3bf0: 09 20 20 20 20 62 72 65 61 6b 3b 0a 20 09 7d 0a . break;. .}.
3c00: 20 20 20 20 20 7d 0a 0a 49 6e 64 65 78 3a 20 75 }..Index: u
3c10: 6e 69 78 2f 74 63 6c 55 6e 69 78 45 76 65 6e 74 nix/tclUnixEvent
3c20: 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .c.=============
3c30: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3c40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3c50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3c60: 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 78 2f 74 =====.--- unix/t
3c70: 63 6c 55 6e 69 78 45 76 65 6e 74 2e 63 0a 2b 2b clUnixEvent.c.++
3c80: 2b 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 45 76 + unix/tclUnixEv
3c90: 65 6e 74 2e 63 0a 40 40 20 2d 34 30 2c 31 31 20 ent.c.@@ -40,11
3ca0: 2b 34 30 2c 31 31 20 40 40 0a 20 20 20 20 20 20 +40,11 @@.
3cb0: 2a 20 54 68 65 20 6f 6e 6c 79 20 74 72 69 63 6b * The only trick
3cc0: 20 68 65 72 65 20 69 73 20 74 68 61 74 20 73 65 here is that se
3cd0: 6c 65 63 74 20 61 70 70 65 61 72 73 20 74 6f 20 lect appears to
3ce0: 72 65 74 75 72 6e 20 65 61 72 6c 79 20 75 6e 64 return early und
3cf0: 65 72 20 73 6f 6d 65 0a 20 20 20 20 20 20 2a 20 er some. *
3d00: 63 6f 6e 64 69 74 69 6f 6e 73 2c 20 73 6f 20 77 conditions, so w
3d10: 65 20 68 61 76 65 20 74 6f 20 63 68 65 63 6b 20 e have to check
3d20: 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 68 61 to make sure tha
3d30: 74 20 74 68 65 20 72 69 67 68 74 20 61 6d 6f 75 t the right amou
3d40: 6e 74 20 6f 66 0a 20 20 20 20 20 20 2a 20 74 69 nt of. * ti
3d50: 6d 65 20 72 65 61 6c 6c 79 20 68 61 73 20 65 6c me really has el
3d60: 61 70 73 65 64 2e 20 20 49 66 20 69 74 27 73 20 apsed. If it's
3d70: 74 6f 6f 20 65 61 72 6c 79 2c 20 67 6f 20 62 61 too early, go ba
3d80: 63 6b 20 74 6f 20 73 6c 65 65 70 20 61 67 61 69 ck to sleep agai
3d90: 6e 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 2d 20 n.. */. .-
3da0: 20 20 20 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 Tcl_GetTime(&
3db0: 62 65 66 6f 72 65 29 3b 0a 2b 20 20 20 20 54 63 before);.+ Tc
3dc0: 6c 70 47 65 74 4d 6f 6e 6f 74 6f 6e 69 63 54 69 lpGetMonotonicTi
3dd0: 6d 65 28 26 62 65 66 6f 72 65 29 3b 0a 20 20 20 me(&before);.
3de0: 20 20 61 66 74 65 72 20 3d 20 62 65 66 6f 72 65 after = before
3df0: 3b 0a 20 20 20 20 20 61 66 74 65 72 2e 73 65 63 ;. after.sec
3e00: 20 2b 3d 20 6d 73 2f 31 30 30 30 3b 0a 20 20 20 += ms/1000;.
3e10: 20 20 61 66 74 65 72 2e 75 73 65 63 20 2b 3d 20 after.usec +=
3e20: 28 6d 73 25 31 30 30 30 29 2a 31 30 30 30 3b 0a (ms%1000)*1000;.
3e30: 20 20 20 20 20 69 66 20 28 61 66 74 65 72 2e 75 if (after.u
3e40: 73 65 63 20 3e 20 31 30 30 30 30 30 30 29 20 7b sec > 1000000) {
3e50: 0a 20 09 61 66 74 65 72 2e 75 73 65 63 20 2d 3d . .after.usec -=
3e60: 20 31 30 30 30 30 30 30 3b 0a 40 40 20 2d 37 39 1000000;.@@ -79
3e70: 2c 31 31 20 2b 37 39 2c 31 31 20 40 40 0a 20 09 ,11 +79,11 @@. .
3e80: 09 7c 7c 20 28 28 64 65 6c 61 79 2e 74 76 5f 75 .|| ((delay.tv_u
3e90: 73 65 63 20 3d 3d 20 30 29 20 26 26 20 28 64 65 sec == 0) && (de
3ea0: 6c 61 79 2e 74 76 5f 73 65 63 20 3d 3d 20 30 29 lay.tv_sec == 0)
3eb0: 29 29 20 7b 0a 20 09 20 20 20 20 62 72 65 61 6b )) {. . break
3ec0: 3b 0a 20 09 7d 0a 20 09 28 76 6f 69 64 29 20 73 ;. .}. .(void) s
3ed0: 65 6c 65 63 74 28 30 2c 20 28 53 45 4c 45 43 54 elect(0, (SELECT
3ee0: 5f 4d 41 53 4b 20 2a 29 20 30 2c 20 28 53 45 4c _MASK *) 0, (SEL
3ef0: 45 43 54 5f 4d 41 53 4b 20 2a 29 20 30 2c 0a 20 ECT_MASK *) 0,.
3f00: 09 09 28 53 45 4c 45 43 54 5f 4d 41 53 4b 20 2a ..(SELECT_MASK *
3f10: 29 20 30 2c 20 26 64 65 6c 61 79 29 3b 0a 2d 09 ) 0, &delay);.-.
3f20: 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 62 65 66 Tcl_GetTime(&bef
3f30: 6f 72 65 29 3b 0a 2b 09 54 63 6c 70 47 65 74 4d ore);.+.TclpGetM
3f40: 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 28 26 62 65 onotonicTime(&be
3f50: 66 6f 72 65 29 3b 0a 20 20 20 20 20 7d 0a 20 7d fore);. }. }
3f60: 0a 20 0c 0a 20 23 65 6e 64 69 66 20 2f 2a 20 48 . .. #endif /* H
3f70: 41 56 45 5f 43 4f 52 45 46 4f 55 4e 44 41 54 49 AVE_COREFOUNDATI
3f80: 4f 4e 20 2a 2f 0a 20 2f 2a 0a 0a 49 6e 64 65 78 ON */. /*..Index
3f90: 3a 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 4e 6f : unix/tclUnixNo
3fa0: 74 66 79 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d tfy.c.==========
3fb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3fc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3fd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
3fe0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 ========.--- uni
3ff0: 78 2f 74 63 6c 55 6e 69 78 4e 6f 74 66 79 2e 63 x/tclUnixNotfy.c
4000: 0a 2b 2b 2b 20 75 6e 69 78 2f 74 63 6c 55 6e 69 .+++ unix/tclUni
4010: 78 4e 6f 74 66 79 2e 63 0a 40 40 20 2d 31 30 30 xNotfy.c.@@ -100
4020: 2c 31 30 20 2b 31 30 30 2c 31 33 20 40 40 0a 20 ,10 +100,13 @@.
4030: 20 20 20 20 76 6f 69 64 20 2a 68 77 6e 64 3b 09 void *hwnd;.
4040: 09 09 2f 2a 20 4d 65 73 73 61 67 69 6e 67 20 77 ../* Messaging w
4050: 69 6e 64 6f 77 2e 20 2a 2f 0a 20 23 65 6c 73 65 indow. */. #else
4060: 20 2f 2a 20 21 5f 5f 43 59 47 57 49 4e 5f 5f 20 /* !__CYGWIN__
4070: 2a 2f 0a 20 20 20 20 20 70 74 68 72 65 61 64 5f */. pthread_
4080: 63 6f 6e 64 5f 74 20 77 61 69 74 43 56 3b 09 2f cond_t waitCV;./
4090: 2a 20 41 6e 79 20 6f 74 68 65 72 20 74 68 72 65 * Any other thre
40a0: 61 64 20 61 6c 65 72 74 73 20 61 20 6e 6f 74 69 ad alerts a noti
40b0: 66 69 65 72 20 74 68 61 74 20 61 6e 0a 20 09 09 fier that an. ..
40c0: 09 09 20 2a 20 65 76 65 6e 74 20 69 73 20 72 65 .. * event is re
40d0: 61 64 79 20 74 6f 20 62 65 20 70 72 6f 63 65 73 ady to be proces
40e0: 73 65 64 20 62 79 20 73 69 67 6e 61 6c 69 6e 67 sed by signaling
40f0: 0a 20 09 09 09 09 20 2a 20 74 68 69 73 20 63 6f . .... * this co
4100: 6e 64 69 74 69 6f 6e 20 76 61 72 69 61 62 6c 65 ndition variable
4110: 2e 20 2a 2f 0a 2b 23 69 66 20 64 65 66 69 6e 65 . */.+#if define
4120: 64 28 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 d(HAVE_CLOCK_GET
4130: 54 49 4d 45 29 20 26 26 20 64 65 66 69 6e 65 64 TIME) && defined
4140: 28 48 41 56 45 5f 50 54 48 52 45 41 44 5f 43 4f (HAVE_PTHREAD_CO
4150: 4e 44 41 54 54 52 5f 53 45 54 43 4c 4f 43 4b 29 NDATTR_SETCLOCK)
4160: 0a 2b 20 20 20 20 69 6e 74 20 75 73 65 4d 6f 6e .+ int useMon
4170: 6f 54 69 6d 65 3b 09 09 2f 2a 20 57 68 65 6e 20 oTime;../* When
4180: 74 72 75 65 20 75 73 65 20 43 4c 4f 43 4b 5f 4d true use CLOCK_M
4190: 4f 4e 4f 54 4f 4e 49 43 20 2a 2f 0a 2b 23 65 6e ONOTONIC */.+#en
41a0: 64 69 66 0a 20 23 65 6e 64 69 66 20 2f 2a 20 5f dif. #endif /* _
41b0: 5f 43 59 47 57 49 4e 5f 5f 20 2a 2f 0a 20 20 20 _CYGWIN__ */.
41c0: 20 20 69 6e 74 20 77 61 69 74 43 56 69 6e 69 74 int waitCVinit
41d0: 69 61 6c 69 7a 65 64 3b 09 2f 2a 20 56 61 72 69 ialized;./* Vari
41e0: 61 62 6c 65 20 74 6f 20 66 6c 61 67 20 69 6e 69 able to flag ini
41f0: 74 69 61 6c 69 7a 61 74 69 6f 6e 20 6f 66 20 74 tialization of t
4200: 68 65 20 73 74 72 75 63 74 75 72 65 20 2a 2f 0a he structure */.
4210: 20 20 20 20 20 69 6e 74 20 65 76 65 6e 74 52 65 int eventRe
4220: 61 64 79 3b 09 09 2f 2a 20 54 72 75 65 20 69 66 ady;../* True if
4230: 20 61 6e 20 65 76 65 6e 74 20 69 73 20 72 65 61 an event is rea
4240: 64 79 20 74 6f 20 62 65 20 70 72 6f 63 65 73 73 dy to be process
4250: 65 64 2e 0a 20 09 09 09 09 20 2a 20 55 73 65 64 ed.. .... * Used
4260: 20 61 73 20 63 6f 6e 64 69 74 69 6f 6e 20 66 6c as condition fl
4270: 61 67 20 74 6f 67 65 74 68 65 72 20 77 69 74 68 ag together with
4280: 20 77 61 69 74 43 56 0a 20 09 09 09 09 20 2a 20 waitCV. .... *
4290: 61 62 6f 76 65 2e 20 2a 2f 0a 40 40 20 2d 33 35 above. */.@@ -35
42a0: 34 2c 31 32 20 2b 33 35 37 2c 32 39 20 40 40 0a 4,12 +357,29 @@.
42b0: 20 09 20 20 20 20 74 73 64 50 74 72 2d 3e 68 77 . tsdPtr->hw
42c0: 6e 64 20 3d 20 43 72 65 61 74 65 57 69 6e 64 6f nd = CreateWindo
42d0: 77 45 78 57 28 4e 55 4c 4c 2c 20 63 6c 61 73 73 wExW(NULL, class
42e0: 2e 6c 70 73 7a 43 6c 61 73 73 4e 61 6d 65 2c 0a .lpszClassName,.
42f0: 20 09 09 20 20 20 20 63 6c 61 73 73 2e 6c 70 73 .. class.lps
4300: 7a 43 6c 61 73 73 4e 61 6d 65 2c 20 30 2c 20 30 zClassName, 0, 0
4310: 2c 20 30 2c 20 30 2c 20 30 2c 20 4e 55 4c 4c 2c , 0, 0, 0, NULL,
4320: 20 4e 55 4c 4c 2c 0a 20 09 09 20 20 20 20 54 63 NULL,. .. Tc
4330: 6c 57 69 6e 47 65 74 54 63 6c 49 6e 73 74 61 6e lWinGetTclInstan
4340: 63 65 28 29 2c 20 4e 55 4c 4c 29 3b 0a 20 09 20 ce(), NULL);. .
4350: 20 20 20 74 73 64 50 74 72 2d 3e 65 76 65 6e 74 tsdPtr->event
4360: 20 3d 20 43 72 65 61 74 65 45 76 65 6e 74 57 28 = CreateEventW(
4370: 4e 55 4c 4c 2c 20 31 20 2f 2a 20 6d 61 6e 75 61 NULL, 1 /* manua
4380: 6c 20 2a 2f 2c 0a 20 09 09 20 20 20 20 30 20 2f l */,. .. 0 /
4390: 2a 20 21 73 69 67 6e 61 6c 65 64 20 2a 2f 2c 20 * !signaled */,
43a0: 4e 55 4c 4c 29 3b 0a 2b 23 65 6c 73 65 0a 2b 23 NULL);.+#else.+#
43b0: 69 66 20 64 65 66 69 6e 65 64 28 48 41 56 45 5f if defined(HAVE_
43c0: 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 29 20 26 CLOCK_GETTIME) &
43d0: 26 20 64 65 66 69 6e 65 64 28 48 41 56 45 5f 50 & defined(HAVE_P
43e0: 54 48 52 45 41 44 5f 43 4f 4e 44 41 54 54 52 5f THREAD_CONDATTR_
43f0: 53 45 54 43 4c 4f 43 4b 29 0a 2b 09 20 20 20 20 SETCLOCK).+.
4400: 70 74 68 72 65 61 64 5f 63 6f 6e 64 61 74 74 72 pthread_condattr
4410: 5f 74 20 61 74 74 72 3b 0a 2b 0a 2b 09 20 20 20 _t attr;.+.+.
4420: 20 70 74 68 72 65 61 64 5f 63 6f 6e 64 61 74 74 pthread_condatt
4430: 72 5f 69 6e 69 74 28 26 61 74 74 72 29 3b 0a 2b r_init(&attr);.+
4440: 09 20 20 20 20 74 73 64 50 74 72 2d 3e 75 73 65 . tsdPtr->use
4450: 4d 6f 6e 6f 54 69 6d 65 20 3d 0a 2b 09 09 20 20 MonoTime =.+..
4460: 20 20 70 74 68 72 65 61 64 5f 63 6f 6e 64 61 74 pthread_condat
4470: 74 72 5f 73 65 74 63 6c 6f 63 6b 28 26 61 74 74 tr_setclock(&att
4480: 72 2c 20 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e r, CLOCK_MONOTON
4490: 49 43 29 20 3d 3d 20 30 3b 0a 2b 09 20 20 20 20 IC) == 0;.+.
44a0: 69 66 20 28 74 73 64 50 74 72 2d 3e 75 73 65 4d if (tsdPtr->useM
44b0: 6f 6e 6f 54 69 6d 65 29 20 7b 0a 2b 09 09 69 66 onoTime) {.+..if
44c0: 20 28 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f 69 (pthread_cond_i
44d0: 6e 69 74 28 26 74 73 64 50 74 72 2d 3e 77 61 69 nit(&tsdPtr->wai
44e0: 74 43 56 2c 20 26 61 74 74 72 29 29 20 7b 0a 2b tCV, &attr)) {.+
44f0: 09 09 20 20 20 20 74 73 64 50 74 72 2d 3e 75 73 .. tsdPtr->us
4500: 65 4d 6f 6e 6f 54 69 6d 65 20 3d 20 30 3b 0a 2b eMonoTime = 0;.+
4510: 09 09 20 20 20 20 70 74 68 72 65 61 64 5f 63 6f .. pthread_co
4520: 6e 64 5f 69 6e 69 74 28 26 74 73 64 50 74 72 2d nd_init(&tsdPtr-
4530: 3e 77 61 69 74 43 56 2c 20 4e 55 4c 4c 29 3b 0a >waitCV, NULL);.
4540: 2b 09 09 7d 0a 2b 09 20 20 20 20 7d 20 65 6c 73 +..}.+. } els
4550: 65 20 7b 0a 2b 09 09 70 74 68 72 65 61 64 5f 63 e {.+..pthread_c
4560: 6f 6e 64 5f 69 6e 69 74 28 26 74 73 64 50 74 72 ond_init(&tsdPtr
4570: 2d 3e 77 61 69 74 43 56 2c 20 4e 55 4c 4c 29 3b ->waitCV, NULL);
4580: 0a 2b 09 20 20 20 20 7d 0a 2b 09 20 20 20 20 70 .+. }.+. p
4590: 74 68 72 65 61 64 5f 63 6f 6e 64 61 74 74 72 5f thread_condattr_
45a0: 64 65 73 74 72 6f 79 28 26 61 74 74 72 29 3b 0a destroy(&attr);.
45b0: 20 23 65 6c 73 65 0a 20 09 20 20 20 20 70 74 68 #else. . pth
45c0: 72 65 61 64 5f 63 6f 6e 64 5f 69 6e 69 74 28 26 read_cond_init(&
45d0: 74 73 64 50 74 72 2d 3e 77 61 69 74 43 56 2c 20 tsdPtr->waitCV,
45e0: 4e 55 4c 4c 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 NULL);.+#endif.
45f0: 23 65 6e 64 69 66 20 2f 2a 20 5f 5f 43 59 47 57 #endif /* __CYGW
4600: 49 4e 5f 5f 20 2a 2f 0a 20 09 20 20 20 20 74 73 IN__ */. . ts
4610: 64 50 74 72 2d 3e 77 61 69 74 43 56 69 6e 69 74 dPtr->waitCVinit
4620: 69 61 6c 69 7a 65 64 20 3d 20 31 3b 0a 20 09 7d ialized = 1;. .}
4630: 0a 20 0a 20 09 70 74 68 72 65 61 64 5f 6d 75 74 . . .pthread_mut
4640: 65 78 5f 6c 6f 63 6b 28 26 6e 6f 74 69 66 69 65 ex_lock(¬ifie
4650: 72 49 6e 69 74 4d 75 74 65 78 29 3b 0a 40 40 20 rInitMutex);.@@
4660: 2d 39 39 37 2c 32 30 20 2b 31 30 31 37 2c 33 33 -997,20 +1017,33
4670: 20 40 40 0a 20 09 09 4d 73 67 57 61 69 74 46 6f @@. ..MsgWaitFo
4680: 72 4d 75 6c 74 69 70 6c 65 4f 62 6a 65 63 74 73 rMultipleObjects
4690: 28 31 2c 20 26 74 73 64 50 74 72 2d 3e 65 76 65 (1, &tsdPtr->eve
46a0: 6e 74 2c 20 30 2c 20 74 69 6d 65 6f 75 74 2c 20 nt, 0, timeout,
46b0: 31 32 37 39 29 3b 0a 20 09 09 70 74 68 72 65 61 1279);. ..pthrea
46c0: 64 5f 6d 75 74 65 78 5f 6c 6f 63 6b 28 26 6e 6f d_mutex_lock(&no
46d0: 74 69 66 69 65 72 4d 75 74 65 78 29 3b 0a 20 09 tifierMutex);. .
46e0: 20 20 20 20 7d 0a 20 23 65 6c 73 65 0a 20 09 20 }. #else. .
46f0: 20 20 20 69 66 20 28 74 69 6d 65 50 74 72 20 21 if (timePtr !
4700: 3d 20 4e 55 4c 4c 29 20 7b 0a 2d 09 20 20 20 20 = NULL) {.-.
4710: 20 20 20 54 63 6c 5f 54 69 6d 65 20 6e 6f 77 3b Tcl_Time now;
4720: 0a 2d 09 20 20 20 20 20 20 20 73 74 72 75 63 74 .-. struct
4730: 20 74 69 6d 65 73 70 65 63 20 70 74 69 6d 65 3b timespec ptime;
4740: 0a 2b 09 09 73 74 72 75 63 74 20 74 69 6d 65 73 .+..struct times
4750: 70 65 63 20 70 74 69 6d 65 3b 0a 20 0a 2d 09 20 pec ptime;. .-.
4760: 20 20 20 20 20 20 54 63 6c 5f 47 65 74 54 69 6d Tcl_GetTim
4770: 65 28 26 6e 6f 77 29 3b 0a 2d 09 20 20 20 20 20 e(&now);.-.
4780: 20 20 70 74 69 6d 65 2e 74 76 5f 73 65 63 20 3d ptime.tv_sec =
4790: 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 20 2b 20 timePtr->sec +
47a0: 6e 6f 77 2e 73 65 63 20 2b 20 28 74 69 6d 65 50 now.sec + (timeP
47b0: 74 72 2d 3e 75 73 65 63 20 2b 20 6e 6f 77 2e 75 tr->usec + now.u
47c0: 73 65 63 29 20 2f 20 31 30 30 30 30 30 30 3b 0a sec) / 1000000;.
47d0: 2d 09 20 20 20 20 20 20 20 70 74 69 6d 65 2e 74 -. ptime.t
47e0: 76 5f 6e 73 65 63 20 3d 20 31 30 30 30 20 2a 20 v_nsec = 1000 *
47f0: 28 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 20 ((timePtr->usec
4800: 2b 20 6e 6f 77 2e 75 73 65 63 29 20 25 20 31 30 + now.usec) % 10
4810: 30 30 30 30 30 29 3b 0a 2b 23 69 66 20 64 65 66 00000);.+#if def
4820: 69 6e 65 64 28 48 41 56 45 5f 43 4c 4f 43 4b 5f ined(HAVE_CLOCK_
4830: 47 45 54 54 49 4d 45 29 20 26 26 20 64 65 66 69 GETTIME) && defi
4840: 6e 65 64 28 48 41 56 45 5f 50 54 48 52 45 41 44 ned(HAVE_PTHREAD
4850: 5f 43 4f 4e 44 41 54 54 52 5f 53 45 54 43 4c 4f _CONDATTR_SETCLO
4860: 43 4b 29 0a 2b 09 09 69 66 20 28 74 73 64 50 74 CK).+..if (tsdPt
4870: 72 2d 3e 75 73 65 4d 6f 6e 6f 54 69 6d 65 29 20 r->useMonoTime)
4880: 7b 0a 2b 09 09 20 20 20 20 63 6c 6f 63 6b 5f 67 {.+.. clock_g
4890: 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e ettime(CLOCK_MON
48a0: 4f 54 4f 4e 49 43 2c 20 26 70 74 69 6d 65 29 3b OTONIC, &ptime);
48b0: 0a 2b 09 09 7d 20 65 6c 73 65 20 7b 0a 2b 09 09 .+..} else {.+..
48c0: 20 20 20 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d clock_gettim
48d0: 65 28 43 4c 4f 43 4b 5f 52 45 41 4c 54 49 4d 45 e(CLOCK_REALTIME
48e0: 2c 20 26 70 74 69 6d 65 29 3b 0a 2b 09 09 7d 0a , &ptime);.+..}.
48f0: 2b 09 09 70 74 69 6d 65 2e 74 76 5f 73 65 63 20 +..ptime.tv_sec
4900: 2b 3d 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 20 += timePtr->sec
4910: 2b 0a 2b 09 09 20 20 20 20 28 74 69 6d 65 50 74 +.+.. (timePt
4920: 72 2d 3e 75 73 65 63 20 2a 20 31 30 30 30 20 2b r->usec * 1000 +
4930: 20 70 74 69 6d 65 2e 74 76 5f 6e 73 65 63 29 20 ptime.tv_nsec)
4940: 2f 20 31 30 30 30 30 30 30 30 30 30 3b 0a 2b 09 / 1000000000;.+.
4950: 09 70 74 69 6d 65 2e 74 76 5f 6e 73 65 63 20 3d .ptime.tv_nsec =
4960: 20 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 20 (timePtr->usec
4970: 2a 20 31 30 30 30 20 2b 20 70 74 69 6d 65 2e 74 * 1000 + ptime.t
4980: 76 5f 6e 73 65 63 29 20 25 0a 2b 09 09 20 20 20 v_nsec) %.+..
4990: 20 31 30 30 30 30 30 30 30 30 30 3b 0a 2b 23 65 1000000000;.+#e
49a0: 6c 73 65 0a 2b 09 09 54 63 6c 5f 54 69 6d 65 20 lse.+..Tcl_Time
49b0: 6e 6f 77 3b 0a 20 0a 2d 09 20 20 20 20 20 20 20 now;. .-.
49c0: 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f 74 69 6d pthread_cond_tim
49d0: 65 64 77 61 69 74 28 26 74 73 64 50 74 72 2d 3e edwait(&tsdPtr->
49e0: 77 61 69 74 43 56 2c 20 26 6e 6f 74 69 66 69 65 waitCV, ¬ifie
49f0: 72 4d 75 74 65 78 2c 20 26 70 74 69 6d 65 29 3b rMutex, &ptime);
4a00: 0a 2b 09 09 54 63 6c 5f 47 65 74 54 69 6d 65 28 .+..Tcl_GetTime(
4a10: 26 6e 6f 77 29 3b 0a 2b 09 09 70 74 69 6d 65 2e &now);.+..ptime.
4a20: 74 76 5f 73 65 63 20 3d 20 74 69 6d 65 50 74 72 tv_sec = timePtr
4a30: 2d 3e 73 65 63 20 2b 20 6e 6f 77 2e 73 65 63 20 ->sec + now.sec
4a40: 2b 0a 2b 09 09 20 20 20 20 28 74 69 6d 65 50 74 +.+.. (timePt
4a50: 72 2d 3e 75 73 65 63 20 2b 20 6e 6f 77 2e 75 73 r->usec + now.us
4a60: 65 63 29 20 2f 20 31 30 30 30 30 30 30 3b 0a 2b ec) / 1000000;.+
4a70: 09 09 70 74 69 6d 65 2e 74 76 5f 6e 73 65 63 20 ..ptime.tv_nsec
4a80: 3d 20 31 30 30 30 20 2a 20 28 28 74 69 6d 65 50 = 1000 * ((timeP
4a90: 74 72 2d 3e 75 73 65 63 20 2b 20 6e 6f 77 2e 75 tr->usec + now.u
4aa0: 73 65 63 29 20 25 20 31 30 30 30 30 30 30 29 3b sec) % 1000000);
4ab0: 0a 2b 23 65 6e 64 69 66 0a 2b 09 09 70 74 68 72 .+#endif.+..pthr
4ac0: 65 61 64 5f 63 6f 6e 64 5f 74 69 6d 65 64 77 61 ead_cond_timedwa
4ad0: 69 74 28 26 74 73 64 50 74 72 2d 3e 77 61 69 74 it(&tsdPtr->wait
4ae0: 43 56 2c 20 26 6e 6f 74 69 66 69 65 72 4d 75 74 CV, ¬ifierMut
4af0: 65 78 2c 20 26 70 74 69 6d 65 29 3b 0a 20 09 20 ex, &ptime);. .
4b00: 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2d 09 20 20 } else {.-.
4b10: 20 20 20 20 20 70 74 68 72 65 61 64 5f 63 6f 6e pthread_con
4b20: 64 5f 77 61 69 74 28 26 74 73 64 50 74 72 2d 3e d_wait(&tsdPtr->
4b30: 77 61 69 74 43 56 2c 20 26 6e 6f 74 69 66 69 65 waitCV, ¬ifie
4b40: 72 4d 75 74 65 78 29 3b 0a 2b 09 09 70 74 68 72 rMutex);.+..pthr
4b50: 65 61 64 5f 63 6f 6e 64 5f 77 61 69 74 28 26 74 ead_cond_wait(&t
4b60: 73 64 50 74 72 2d 3e 77 61 69 74 43 56 2c 20 26 sdPtr->waitCV, &
4b70: 6e 6f 74 69 66 69 65 72 4d 75 74 65 78 29 3b 0a notifierMutex);.
4b80: 20 09 20 20 20 20 7d 0a 20 23 65 6e 64 69 66 20 . }. #endif
4b90: 2f 2a 20 5f 5f 43 59 47 57 49 4e 5f 5f 20 2a 2f /* __CYGWIN__ */
4ba0: 0a 20 09 7d 0a 20 09 74 73 64 50 74 72 2d 3e 65 . .}. .tsdPtr->e
4bb0: 76 65 6e 74 52 65 61 64 79 20 3d 20 30 3b 0a 20 ventReady = 0;.
4bc0: 0a 0a 49 6e 64 65 78 3a 20 75 6e 69 78 2f 74 63 ..Index: unix/tc
4bd0: 6c 55 6e 69 78 50 6f 72 74 2e 68 0a 3d 3d 3d 3d lUnixPort.h.====
4be0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4bf0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4c00: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4c10: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d ==============.-
4c20: 2d 2d 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 50 -- unix/tclUnixP
4c30: 6f 72 74 2e 68 0a 2b 2b 2b 20 75 6e 69 78 2f 74 ort.h.+++ unix/t
4c40: 63 6c 55 6e 69 78 50 6f 72 74 2e 68 0a 40 40 20 clUnixPort.h.@@
4c50: 2d 36 33 35 2c 31 30 20 2b 36 33 35 2c 33 30 20 -635,10 +635,30
4c60: 40 40 0a 20 09 20 20 20 20 28 5f 5f 47 4e 55 43 @@. . (__GNUC
4c70: 5f 5f 20 3e 20 34 20 7c 7c 20 28 5f 5f 47 4e 55 __ > 4 || (__GNU
4c80: 43 5f 5f 20 3d 3d 20 34 20 26 26 20 28 5f 5f 47 C__ == 4 && (__G
4c90: 4e 55 43 5f 4d 49 4e 4f 52 5f 5f 20 3e 20 32 20 NUC_MINOR__ > 2
4ca0: 7c 7c 20 5c 0a 20 09 20 20 20 20 28 5f 5f 47 4e || \. . (__GN
4cb0: 55 43 5f 4d 49 4e 4f 52 5f 5f 20 3d 3d 20 32 20 UC_MINOR__ == 2
4cc0: 26 26 20 5f 5f 47 4e 55 43 5f 50 41 54 43 48 4c && __GNUC_PATCHL
4cd0: 45 56 45 4c 5f 5f 20 3e 20 30 29 29 29 29 0a 20 EVEL__ > 0)))).
4ce0: 23 09 75 6e 64 65 66 20 55 53 45 5f 56 46 4f 52 #.undef USE_VFOR
4cf0: 4b 0a 20 23 20 20 20 65 6e 64 69 66 20 2f 2a 20 K. # endif /*
4d00: 5f 5f 6c 6c 76 6d 5f 5f 20 2a 2f 0a 20 23 65 6e __llvm__ */. #en
4d10: 64 69 66 20 2f 2a 20 5f 5f 41 50 50 4c 45 5f 5f dif /* __APPLE__
4d20: 20 2a 2f 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d */.+..+/*.+ *--
4d30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4d70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 20 55 73 ---------.+ * Us
4d80: 65 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 e clock_gettime(
4d90: 29 20 6f 6e 6c 79 20 69 66 20 5f 50 4f 53 49 58 ) only if _POSIX
4da0: 5f 4d 4f 4e 4f 54 4f 4e 49 43 5f 43 4c 4f 43 4b _MONOTONIC_CLOCK
4db0: 20 70 72 65 73 65 6e 74 2e 0a 2b 20 2a 2d 2d 2d present..+ *---
4dc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4dd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4de0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4e00: 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a --------.+ */.+.
4e10: 2b 23 69 66 20 64 65 66 69 6e 65 64 28 48 41 56 +#if defined(HAV
4e20: 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 29 E_CLOCK_GETTIME)
4e30: 20 26 26 20 21 64 65 66 69 6e 65 64 28 5f 50 4f && !defined(_PO
4e40: 53 49 58 5f 4d 4f 4e 4f 54 4f 4e 49 43 5f 43 4c SIX_MONOTONIC_CL
4e50: 4f 43 4b 29 0a 2b 23 20 20 20 75 6e 64 65 66 20 OCK).+# undef
4e60: 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 HAVE_CLOCK_GETTI
4e70: 4d 45 0a 2b 23 65 6e 64 69 66 0a 2b 0a 2b 23 69 ME.+#endif.+.+#i
4e80: 66 64 65 66 20 54 43 4c 5f 54 48 52 45 41 44 53 fdef TCL_THREADS
4e90: 0a 2b 23 20 20 20 69 66 6e 64 65 66 20 48 41 56 .+# ifndef HAV
4ea0: 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 0a E_CLOCK_GETTIME.
4eb0: 2b 23 09 75 6e 64 65 66 20 48 41 56 45 5f 50 54 +#.undef HAVE_PT
4ec0: 48 52 45 41 44 5f 43 4f 4e 44 41 54 54 52 5f 53 HREAD_CONDATTR_S
4ed0: 45 54 43 4c 4f 43 4b 0a 2b 23 20 20 20 65 6e 64 ETCLOCK.+# end
4ee0: 69 66 0a 2b 23 20 20 20 69 66 6e 64 65 66 20 48 if.+# ifndef H
4ef0: 41 56 45 5f 50 54 48 52 45 41 44 5f 43 4f 4e 44 AVE_PTHREAD_COND
4f00: 41 54 54 52 5f 53 45 54 43 4c 4f 43 4b 0a 2b 23 ATTR_SETCLOCK.+#
4f10: 09 75 6e 64 65 66 20 48 41 56 45 5f 43 4c 4f 43 .undef HAVE_CLOC
4f20: 4b 5f 47 45 54 54 49 4d 45 0a 2b 23 20 20 20 65 K_GETTIME.+# e
4f30: 6e 64 69 66 0a 2b 23 65 6e 64 69 66 0a 2b 0a 20 ndif.+#endif.+.
4f40: 0c 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d .. /*. *-------
4f50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4f60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4f70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
4f90: 2d 2d 2d 2d 0a 20 20 2a 20 54 68 65 20 66 6f 6c ----. * The fol
4fa0: 6c 6f 77 69 6e 67 20 6d 61 63 72 6f 73 20 61 6e lowing macros an
4fb0: 64 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 20 72 d declarations r
4fc0: 65 70 72 65 73 65 6e 74 20 74 68 65 20 69 6e 74 epresent the int
4fd0: 65 72 66 61 63 65 20 62 65 74 77 65 65 6e 0a 20 erface between.
4fe0: 20 2a 20 67 65 6e 65 72 69 63 20 61 6e 64 20 75 * generic and u
4ff0: 6e 69 78 2d 73 70 65 63 69 66 69 63 20 70 61 72 nix-specific par
5000: 74 73 20 6f 66 20 54 63 6c 2e 20 53 6f 6d 65 20 ts of Tcl. Some
5010: 6f 66 20 74 68 65 20 6d 61 63 72 6f 73 20 6d 61 of the macros ma
5020: 79 20 6f 76 65 72 72 69 64 65 0a 0a 49 6e 64 65 y override..Inde
5030: 78 3a 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 54 x: unix/tclUnixT
5040: 68 72 64 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d hrd.c.==========
5050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5060: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5080: 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 ========.--- uni
5090: 78 2f 74 63 6c 55 6e 69 78 54 68 72 64 2e 63 0a x/tclUnixThrd.c.
50a0: 2b 2b 2b 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 +++ unix/tclUnix
50b0: 54 68 72 64 2e 63 0a 40 40 20 2d 35 32 35 2c 31 Thrd.c.@@ -525,1
50c0: 30 20 2b 35 32 35 2c 31 33 20 40 40 0a 20 20 20 0 +525,13 @@.
50d0: 20 20 63 6f 6e 73 74 20 54 63 6c 5f 54 69 6d 65 const Tcl_Time
50e0: 20 2a 74 69 6d 65 50 74 72 29 20 2f 2a 20 54 69 *timePtr) /* Ti
50f0: 6d 65 6f 75 74 20 6f 6e 20 77 61 69 74 69 6e 67 meout on waiting
5100: 20 70 65 72 69 6f 64 20 2a 2f 0a 20 7b 0a 20 20 period */. {.
5110: 20 20 20 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f pthread_cond_
5120: 74 20 2a 70 63 6f 6e 64 50 74 72 3b 0a 20 20 20 t *pcondPtr;.
5130: 20 20 70 74 68 72 65 61 64 5f 6d 75 74 65 78 5f pthread_mutex_
5140: 74 20 2a 70 6d 75 74 65 78 50 74 72 3b 0a 20 20 t *pmutexPtr;.
5150: 20 20 20 73 74 72 75 63 74 20 74 69 6d 65 73 70 struct timesp
5160: 65 63 20 70 74 69 6d 65 3b 0a 2b 23 69 66 20 64 ec ptime;.+#if d
5170: 65 66 69 6e 65 64 28 48 41 56 45 5f 43 4c 4f 43 efined(HAVE_CLOC
5180: 4b 5f 47 45 54 54 49 4d 45 29 20 26 26 20 64 65 K_GETTIME) && de
5190: 66 69 6e 65 64 28 48 41 56 45 5f 50 54 48 52 45 fined(HAVE_PTHRE
51a0: 41 44 5f 43 4f 4e 44 41 54 54 52 5f 53 45 54 43 AD_CONDATTR_SETC
51b0: 4c 4f 43 4b 29 0a 2b 20 20 20 20 69 6e 74 20 2a LOCK).+ int *
51c0: 6d 6f 6e 6f 46 6c 61 67 50 74 72 3b 0a 2b 23 65 monoFlagPtr;.+#e
51d0: 6e 64 69 66 0a 20 0a 20 20 20 20 20 69 66 20 28 ndif. . if (
51e0: 2a 63 6f 6e 64 50 74 72 20 3d 3d 20 4e 55 4c 4c *condPtr == NULL
51f0: 29 20 7b 0a 20 09 4d 41 53 54 45 52 5f 4c 4f 43 ) {. .MASTER_LOC
5200: 4b 3b 0a 20 0a 20 09 2f 2a 0a 40 40 20 2d 35 33 K;. . ./*.@@ -53
5210: 35 2c 31 32 20 2b 35 33 38 2c 33 30 20 40 40 0a 5,12 +538,30 @@.
5220: 20 09 20 2a 20 44 6f 75 62 6c 65 20 63 68 65 63 . * Double chec
5230: 6b 20 69 6e 73 69 64 65 20 6d 75 74 65 78 20 74 k inside mutex t
5240: 6f 20 61 76 6f 69 64 20 72 61 63 65 2c 20 74 68 o avoid race, th
5250: 65 6e 20 69 6e 69 74 69 61 6c 69 7a 65 20 63 6f en initialize co
5260: 6e 64 69 74 69 6f 6e 0a 20 09 20 2a 20 76 61 72 ndition. . * var
5270: 69 61 62 6c 65 20 69 66 20 6e 65 63 65 73 73 61 iable if necessa
5280: 72 79 2e 0a 20 09 20 2a 2f 0a 20 0a 20 09 69 66 ry.. . */. . .if
5290: 20 28 2a 63 6f 6e 64 50 74 72 20 3d 3d 20 4e 55 (*condPtr == NU
52a0: 4c 4c 29 20 7b 0a 2b 23 69 66 20 64 65 66 69 6e LL) {.+#if defin
52b0: 65 64 28 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 ed(HAVE_CLOCK_GE
52c0: 54 54 49 4d 45 29 20 26 26 20 64 65 66 69 6e 65 TTIME) && define
52d0: 64 28 48 41 56 45 5f 50 54 48 52 45 41 44 5f 43 d(HAVE_PTHREAD_C
52e0: 4f 4e 44 41 54 54 52 5f 53 45 54 43 4c 4f 43 4b ONDATTR_SETCLOCK
52f0: 29 0a 2b 09 20 20 20 20 70 74 68 72 65 61 64 5f ).+. pthread_
5300: 63 6f 6e 64 61 74 74 72 5f 74 20 61 74 74 72 3b condattr_t attr;
5310: 0a 2b 0a 2b 09 20 20 20 20 70 63 6f 6e 64 50 74 .+.+. pcondPt
5320: 72 20 3d 20 63 6b 61 6c 6c 6f 63 28 73 69 7a 65 r = ckalloc(size
5330: 6f 66 28 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f of(pthread_cond_
5340: 74 29 20 2b 20 73 69 7a 65 6f 66 28 69 6e 74 29 t) + sizeof(int)
5350: 29 3b 0a 2b 09 20 20 20 20 6d 6f 6e 6f 46 6c 61 );.+. monoFla
5360: 67 50 74 72 20 3d 20 28 69 6e 74 20 2a 29 20 28 gPtr = (int *) (
5370: 70 63 6f 6e 64 50 74 72 20 2b 20 31 29 3b 0a 2b pcondPtr + 1);.+
5380: 09 20 20 20 20 70 74 68 72 65 61 64 5f 63 6f 6e . pthread_con
5390: 64 61 74 74 72 5f 69 6e 69 74 28 26 61 74 74 72 dattr_init(&attr
53a0: 29 3b 0a 2b 09 20 20 20 20 2a 6d 6f 6e 6f 46 6c );.+. *monoFl
53b0: 61 67 50 74 72 20 3d 20 28 70 74 68 72 65 61 64 agPtr = (pthread
53c0: 5f 63 6f 6e 64 61 74 74 72 5f 73 65 74 63 6c 6f _condattr_setclo
53d0: 63 6b 28 26 61 74 74 72 2c 20 43 4c 4f 43 4b 5f ck(&attr, CLOCK_
53e0: 4d 4f 4e 4f 54 4f 4e 49 43 29 20 3d 3d 20 30 29 MONOTONIC) == 0)
53f0: 3b 0a 2b 09 20 20 20 20 69 66 20 28 2a 6d 6f 6e ;.+. if (*mon
5400: 6f 46 6c 61 67 50 74 72 29 20 7b 0a 2b 09 09 69 oFlagPtr) {.+..i
5410: 66 20 28 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f f (pthread_cond_
5420: 69 6e 69 74 28 70 63 6f 6e 64 50 74 72 2c 20 26 init(pcondPtr, &
5430: 61 74 74 72 29 29 20 7b 0a 2b 09 09 20 20 20 20 attr)) {.+..
5440: 2a 6d 6f 6e 6f 46 6c 61 67 50 74 72 20 3d 20 30 *monoFlagPtr = 0
5450: 3b 0a 2b 09 09 20 20 20 20 70 74 68 72 65 61 64 ;.+.. pthread
5460: 5f 63 6f 6e 64 5f 69 6e 69 74 28 70 63 6f 6e 64 _cond_init(pcond
5470: 50 74 72 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 09 7d Ptr, NULL);.+..}
5480: 0a 2b 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a .+. } else {.
5490: 2b 09 09 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f +..pthread_cond_
54a0: 69 6e 69 74 28 70 63 6f 6e 64 50 74 72 2c 20 4e init(pcondPtr, N
54b0: 55 4c 4c 29 3b 0a 2b 09 20 20 20 20 7d 0a 2b 09 ULL);.+. }.+.
54c0: 20 20 20 20 70 74 68 72 65 61 64 5f 63 6f 6e 64 pthread_cond
54d0: 61 74 74 72 5f 64 65 73 74 72 6f 79 28 26 61 74 attr_destroy(&at
54e0: 74 72 29 3b 0a 2b 23 65 6c 73 65 0a 20 09 20 20 tr);.+#else. .
54f0: 20 20 70 63 6f 6e 64 50 74 72 20 3d 20 63 6b 61 pcondPtr = cka
5500: 6c 6c 6f 63 28 73 69 7a 65 6f 66 28 70 74 68 72 lloc(sizeof(pthr
5510: 65 61 64 5f 63 6f 6e 64 5f 74 29 29 3b 0a 20 09 ead_cond_t));. .
5520: 20 20 20 20 70 74 68 72 65 61 64 5f 63 6f 6e 64 pthread_cond
5530: 5f 69 6e 69 74 28 70 63 6f 6e 64 50 74 72 2c 20 _init(pcondPtr,
5540: 4e 55 4c 4c 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 NULL);.+#endif.
5550: 09 20 20 20 20 2a 63 6f 6e 64 50 74 72 20 3d 20 . *condPtr =
5560: 28 54 63 6c 5f 43 6f 6e 64 69 74 69 6f 6e 29 20 (Tcl_Condition)
5570: 70 63 6f 6e 64 50 74 72 3b 0a 20 09 20 20 20 20 pcondPtr;. .
5580: 54 63 6c 52 65 6d 65 6d 62 65 72 43 6f 6e 64 69 TclRememberCondi
5590: 74 69 6f 6e 28 63 6f 6e 64 50 74 72 29 3b 0a 20 tion(condPtr);.
55a0: 09 7d 0a 20 09 4d 41 53 54 45 52 5f 55 4e 4c 4f .}. .MASTER_UNLO
55b0: 43 4b 3b 0a 20 20 20 20 20 7d 0a 40 40 20 2d 35 CK;. }.@@ -5
55c0: 34 37 2c 31 30 20 2b 35 36 38 2c 31 37 20 40 40 47,10 +568,17 @@
55d0: 0a 20 20 20 20 20 70 6d 75 74 65 78 50 74 72 20 . pmutexPtr
55e0: 3d 20 2a 28 28 70 74 68 72 65 61 64 5f 6d 75 74 = *((pthread_mut
55f0: 65 78 5f 74 20 2a 2a 29 6d 75 74 65 78 50 74 72 ex_t **)mutexPtr
5600: 29 3b 0a 20 20 20 20 20 70 63 6f 6e 64 50 74 72 );. pcondPtr
5610: 20 3d 20 2a 28 28 70 74 68 72 65 61 64 5f 63 6f = *((pthread_co
5620: 6e 64 5f 74 20 2a 2a 29 63 6f 6e 64 50 74 72 29 nd_t **)condPtr)
5630: 3b 0a 20 20 20 20 20 69 66 20 28 74 69 6d 65 50 ;. if (timeP
5640: 74 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 tr == NULL) {. .
5650: 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f 77 61 69 pthread_cond_wai
5660: 74 28 70 63 6f 6e 64 50 74 72 2c 20 70 6d 75 74 t(pcondPtr, pmut
5670: 65 78 50 74 72 29 3b 0a 20 20 20 20 20 7d 20 65 exPtr);. } e
5680: 6c 73 65 20 7b 0a 2b 23 69 66 20 64 65 66 69 6e lse {.+#if defin
5690: 65 64 28 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 ed(HAVE_CLOCK_GE
56a0: 54 54 49 4d 45 29 20 26 26 20 64 65 66 69 6e 65 TTIME) && define
56b0: 64 28 48 41 56 45 5f 50 54 48 52 45 41 44 5f 43 d(HAVE_PTHREAD_C
56c0: 4f 4e 44 41 54 54 52 5f 53 45 54 43 4c 4f 43 4b ONDATTR_SETCLOCK
56d0: 29 0a 2b 09 6d 6f 6e 6f 46 6c 61 67 50 74 72 20 ).+.monoFlagPtr
56e0: 3d 20 28 69 6e 74 20 2a 29 20 28 70 63 6f 6e 64 = (int *) (pcond
56f0: 50 74 72 20 2b 20 31 29 3b 0a 2b 09 63 6c 6f 63 Ptr + 1);.+.cloc
5700: 6b 5f 67 65 74 74 69 6d 65 28 2a 6d 6f 6e 6f 46 k_gettime(*monoF
5710: 6c 61 67 50 74 72 20 3f 20 43 4c 4f 43 4b 5f 4d lagPtr ? CLOCK_M
5720: 4f 4e 4f 54 4f 4e 49 43 20 3a 20 43 4c 4f 43 4b ONOTONIC : CLOCK
5730: 5f 52 45 41 4c 54 49 4d 45 2c 20 26 70 74 69 6d _REALTIME, &ptim
5740: 65 29 3b 0a 2b 09 70 74 69 6d 65 2e 74 76 5f 73 e);.+.ptime.tv_s
5750: 65 63 20 2b 3d 20 74 69 6d 65 50 74 72 2d 3e 73 ec += timePtr->s
5760: 65 63 20 2b 0a 2b 09 20 20 20 20 28 74 69 6d 65 ec +.+. (time
5770: 50 74 72 2d 3e 75 73 65 63 20 2a 20 31 30 30 30 Ptr->usec * 1000
5780: 20 2b 20 70 74 69 6d 65 2e 74 76 5f 6e 73 65 63 + ptime.tv_nsec
5790: 29 20 2f 20 31 30 30 30 30 30 30 30 30 30 3b 0a ) / 1000000000;.
57a0: 2b 09 70 74 69 6d 65 2e 74 76 5f 6e 73 65 63 20 +.ptime.tv_nsec
57b0: 3d 20 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 = (timePtr->usec
57c0: 20 2a 20 31 30 30 30 20 2b 20 70 74 69 6d 65 2e * 1000 + ptime.
57d0: 74 76 5f 6e 73 65 63 29 20 25 20 31 30 30 30 30 tv_nsec) % 10000
57e0: 30 30 30 30 30 3b 0a 2b 23 65 6c 73 65 0a 20 09 00000;.+#else. .
57f0: 54 63 6c 5f 54 69 6d 65 20 6e 6f 77 3b 0a 20 0a Tcl_Time now;. .
5800: 20 09 2f 2a 0a 20 09 20 2a 20 4d 61 6b 65 20 73 ./*. . * Make s
5810: 75 72 65 20 74 6f 20 74 61 6b 65 20 69 6e 74 6f ure to take into
5820: 20 61 63 63 6f 75 6e 74 20 74 68 65 20 6d 69 63 account the mic
5830: 72 6f 73 65 63 6f 6e 64 20 63 6f 6d 70 6f 6e 65 rosecond compone
5840: 6e 74 20 6f 66 20 74 68 65 0a 20 09 20 2a 20 63 nt of the. . * c
5850: 75 72 72 65 6e 74 20 74 69 6d 65 2c 20 69 6e 63 urrent time, inc
5860: 6c 75 64 69 6e 67 20 70 6f 73 73 69 62 6c 65 20 luding possible
5870: 6f 76 65 72 66 6c 6f 77 20 73 69 74 75 61 74 69 overflow situati
5880: 6f 6e 73 2e 20 5b 42 75 67 20 23 34 31 31 36 30 ons. [Bug #41160
5890: 33 5d 0a 40 40 20 2d 35 35 38 2c 31 30 20 2b 35 3].@@ -558,10 +5
58a0: 38 36 2c 31 31 20 40 40 0a 20 0a 20 09 54 63 6c 86,11 @@. . .Tcl
58b0: 5f 47 65 74 54 69 6d 65 28 26 6e 6f 77 29 3b 0a _GetTime(&now);.
58c0: 20 09 70 74 69 6d 65 2e 74 76 5f 73 65 63 20 3d .ptime.tv_sec =
58d0: 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 20 2b 20 timePtr->sec +
58e0: 6e 6f 77 2e 73 65 63 20 2b 0a 20 09 20 20 20 20 now.sec +. .
58f0: 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 20 2b (timePtr->usec +
5900: 20 6e 6f 77 2e 75 73 65 63 29 20 2f 20 31 30 30 now.usec) / 100
5910: 30 30 30 30 3b 0a 20 09 70 74 69 6d 65 2e 74 76 0000;. .ptime.tv
5920: 5f 6e 73 65 63 20 3d 20 31 30 30 30 20 2a 20 28 _nsec = 1000 * (
5930: 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 20 2b (timePtr->usec +
5940: 20 6e 6f 77 2e 75 73 65 63 29 20 25 20 31 30 30 now.usec) % 100
5950: 30 30 30 30 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 0000);.+#endif.
5960: 09 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f 74 69 .pthread_cond_ti
5970: 6d 65 64 77 61 69 74 28 70 63 6f 6e 64 50 74 72 medwait(pcondPtr
5980: 2c 20 70 6d 75 74 65 78 50 74 72 2c 20 26 70 74 , pmutexPtr, &pt
5990: 69 6d 65 29 3b 0a 20 20 20 20 20 7d 0a 20 7d 0a ime);. }. }.
59a0: 20 0c 0a 20 2f 2a 0a 0a 49 6e 64 65 78 3a 20 75 .. /*..Index: u
59b0: 6e 69 78 2f 74 63 6c 55 6e 69 78 54 69 6d 65 2e nix/tclUnixTime.
59c0: 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d c.==============
59d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
59e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
59f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5a00: 3d 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 78 2f 74 63 ====.--- unix/tc
5a10: 6c 55 6e 69 78 54 69 6d 65 2e 63 0a 2b 2b 2b 20 lUnixTime.c.+++
5a20: 75 6e 69 78 2f 74 63 6c 55 6e 69 78 54 69 6d 65 unix/tclUnixTime
5a30: 2e 63 0a 40 40 20 2d 31 30 33 2c 31 30 20 2b 31 .c.@@ -103,10 +1
5a40: 30 33 2c 31 36 20 40 40 0a 20 75 6e 73 69 67 6e 03,16 @@. unsign
5a50: 65 64 20 6c 6f 6e 67 0a 20 54 63 6c 70 47 65 74 ed long. TclpGet
5a60: 43 6c 69 63 6b 73 28 76 6f 69 64 29 0a 20 7b 0a Clicks(void). {.
5a70: 20 20 20 20 20 75 6e 73 69 67 6e 65 64 20 6c 6f unsigned lo
5a80: 6e 67 20 6e 6f 77 3b 0a 20 0a 2b 23 69 66 64 65 ng now;. .+#ifde
5a90: 66 20 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 f HAVE_CLOCK_GET
5aa0: 54 49 4d 45 0a 2b 20 20 20 20 54 63 6c 5f 54 69 TIME.+ Tcl_Ti
5ab0: 6d 65 20 74 69 6d 65 3b 0a 2b 0a 2b 20 20 20 20 me time;.+.+
5ac0: 54 63 6c 70 47 65 74 4d 6f 6e 6f 74 6f 6e 69 63 TclpGetMonotonic
5ad0: 54 69 6d 65 28 26 74 69 6d 65 29 3b 0a 2b 20 20 Time(&time);.+
5ae0: 20 20 6e 6f 77 20 3d 20 74 69 6d 65 2e 73 65 63 now = time.sec
5af0: 2a 31 30 30 30 30 30 30 20 2b 20 74 69 6d 65 2e *1000000 + time.
5b00: 75 73 65 63 3b 0a 2b 23 65 6c 73 65 0a 20 23 69 usec;.+#else. #i
5b10: 66 64 65 66 20 4e 4f 5f 47 45 54 54 4f 44 0a 20 fdef NO_GETTOD.
5b20: 20 20 20 20 69 66 20 28 74 63 6c 47 65 74 54 69 if (tclGetTi
5b30: 6d 65 50 72 6f 63 50 74 72 20 21 3d 20 4e 61 74 meProcPtr != Nat
5b40: 69 76 65 47 65 74 54 69 6d 65 29 20 7b 0a 20 09 iveGetTime) {. .
5b50: 54 63 6c 5f 54 69 6d 65 20 74 69 6d 65 3b 0a 20 Tcl_Time time;.
5b60: 0a 20 09 74 63 6c 47 65 74 54 69 6d 65 50 72 6f . .tclGetTimePro
5b70: 63 50 74 72 28 26 74 69 6d 65 2c 20 74 63 6c 54 cPtr(&time, tclT
5b80: 69 6d 65 43 6c 69 65 6e 74 44 61 74 61 29 3b 0a imeClientData);.
5b90: 40 40 20 2d 31 32 32 2c 31 30 20 2b 31 32 38 2c @@ -122,10 +128,
5ba0: 31 31 20 40 40 0a 20 23 65 6c 73 65 0a 20 20 20 11 @@. #else.
5bb0: 20 20 54 63 6c 5f 54 69 6d 65 20 74 69 6d 65 3b Tcl_Time time;
5bc0: 0a 20 0a 20 20 20 20 20 74 63 6c 47 65 74 54 69 . . tclGetTi
5bd0: 6d 65 50 72 6f 63 50 74 72 28 26 74 69 6d 65 2c meProcPtr(&time,
5be0: 20 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 44 61 tclTimeClientDa
5bf0: 74 61 29 3b 0a 20 20 20 20 20 6e 6f 77 20 3d 20 ta);. now =
5c00: 74 69 6d 65 2e 73 65 63 2a 31 30 30 30 30 30 30 time.sec*1000000
5c10: 20 2b 20 74 69 6d 65 2e 75 73 65 63 3b 0a 2b 23 + time.usec;.+#
5c20: 65 6e 64 69 66 0a 20 23 65 6e 64 69 66 0a 20 0a endif. #endif. .
5c30: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 77 3b return now;
5c40: 0a 20 7d 0a 20 23 69 66 64 65 66 20 54 43 4c 5f . }. #ifdef TCL_
5c50: 57 49 44 45 5f 43 4c 49 43 4b 53 0a 40 40 20 2d WIDE_CLICKS.@@ -
5c60: 33 37 34 2c 31 33 20 2b 33 38 31 2c 31 35 20 40 374,13 +381,15 @
5c70: 40 0a 20 54 63 6c 5f 53 65 74 54 69 6d 65 50 72 @. Tcl_SetTimePr
5c80: 6f 63 28 0a 20 20 20 20 20 54 63 6c 5f 47 65 74 oc(. Tcl_Get
5c90: 54 69 6d 65 50 72 6f 63 20 2a 67 65 74 50 72 6f TimeProc *getPro
5ca0: 63 2c 0a 20 20 20 20 20 54 63 6c 5f 53 63 61 6c c,. Tcl_Scal
5cb0: 65 54 69 6d 65 50 72 6f 63 20 2a 73 63 61 6c 65 eTimeProc *scale
5cc0: 50 72 6f 63 2c 0a 20 20 20 20 20 43 6c 69 65 6e Proc,. Clien
5cd0: 74 44 61 74 61 20 63 6c 69 65 6e 74 44 61 74 61 tData clientData
5ce0: 29 0a 20 7b 0a 2b 23 69 66 6e 64 65 66 20 48 41 ). {.+#ifndef HA
5cf0: 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 VE_CLOCK_GETTIME
5d00: 0a 20 20 20 20 20 74 63 6c 47 65 74 54 69 6d 65 . tclGetTime
5d10: 50 72 6f 63 50 74 72 20 3d 20 67 65 74 50 72 6f ProcPtr = getPro
5d20: 63 3b 0a 20 20 20 20 20 74 63 6c 53 63 61 6c 65 c;. tclScale
5d30: 54 69 6d 65 50 72 6f 63 50 74 72 20 3d 20 73 63 TimeProcPtr = sc
5d40: 61 6c 65 50 72 6f 63 3b 0a 20 20 20 20 20 74 63 aleProc;. tc
5d50: 6c 54 69 6d 65 43 6c 69 65 6e 74 44 61 74 61 20 lTimeClientData
5d60: 3d 20 63 6c 69 65 6e 74 44 61 74 61 3b 0a 2b 23 = clientData;.+#
5d70: 65 6e 64 69 66 0a 20 7d 0a 20 0c 0a 20 2f 2a 0a endif. }. .. /*.
5d80: 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *-------------
5d90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5da0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5db0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5dc0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 2a 0a 40 40 ---------. *.@@
5dd0: 20 2d 35 32 39 2c 31 33 20 2b 35 33 38 2c 36 35 -529,13 +538,65
5de0: 20 40 40 0a 20 43 6c 65 61 6e 75 70 4d 65 6d 6f @@. CleanupMemo
5df0: 72 79 28 0a 20 20 20 20 20 43 6c 69 65 6e 74 44 ry(. ClientD
5e00: 61 74 61 20 69 67 6e 6f 72 65 64 29 0a 20 7b 0a ata ignored). {.
5e10: 20 20 20 20 20 63 6b 66 72 65 65 28 6c 61 73 74 ckfree(last
5e20: 54 5a 29 3b 0a 20 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b TZ);. }.+..+/*.+
5e30: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *--------------
5e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5e50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5e60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5e70: 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a --------.+ *.+ *
5e80: 20 54 63 6c 70 47 65 74 4d 6f 6e 6f 6e 6f 74 69 TclpGetMononoti
5e90: 63 54 69 6d 65 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a cTime --.+ *.+ *
5ea0: 09 4c 69 6b 65 20 54 63 6c 5f 47 65 74 54 69 6d .Like Tcl_GetTim
5eb0: 65 28 29 20 62 75 74 20 72 65 74 75 72 6e 20 61 e() but return a
5ec0: 20 6d 6f 6e 6f 74 6f 6e 69 63 20 63 6c 6f 63 6b monotonic clock
5ed0: 20 73 6f 75 72 63 65 2c 0a 2b 20 2a 09 69 66 20 source,.+ *.if
5ee0: 70 6f 73 73 69 62 6c 65 2e 20 4f 74 68 65 72 77 possible. Otherw
5ef0: 69 73 65 20 66 61 6c 6c 20 62 61 63 6b 20 74 6f ise fall back to
5f00: 20 72 65 61 6c 20 28 77 61 6c 6c 20 63 6c 6f 63 real (wall cloc
5f10: 6b 29 20 74 69 6d 65 2e 0a 2b 20 2a 0a 2b 20 2a k) time..+ *.+ *
5f20: 20 52 65 73 75 6c 74 73 3a 0a 2b 20 2a 09 31 20 Results:.+ *.1
5f30: 69 66 20 6d 6f 6e 6f 74 6f 6e 69 63 2c 20 30 20 if monotonic, 0
5f40: 6f 74 68 65 72 77 69 73 65 2e 0a 2b 20 2a 0a 2b otherwise..+ *.+
5f50: 20 2a 20 53 69 64 65 20 65 66 66 65 63 74 73 3a * Side effects:
5f60: 0a 2b 20 2a 09 4e 6f 6e 65 2e 0a 2b 20 2a 0a 2b .+ *.None..+ *.+
5f70: 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d *--------------
5f80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5f90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5fa0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5fb0: 2d 2d 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a --------.+ */.+.
5fc0: 2b 69 6e 74 0a 2b 54 63 6c 70 47 65 74 4d 6f 6e +int.+TclpGetMon
5fd0: 6f 74 6f 6e 69 63 54 69 6d 65 28 54 63 6c 5f 54 otonicTime(Tcl_T
5fe0: 69 6d 65 20 2a 74 69 6d 65 50 74 72 29 0a 2b 7b ime *timePtr).+{
5ff0: 0a 2b 23 69 66 64 65 66 20 48 41 56 45 5f 43 4c .+#ifdef HAVE_CL
6000: 4f 43 4b 5f 47 45 54 54 49 4d 45 0a 2b 20 20 20 OCK_GETTIME.+
6010: 20 69 6e 74 20 72 65 74 3b 0a 2b 20 20 20 20 73 int ret;.+ s
6020: 74 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 74 truct timespec t
6030: 73 3b 0a 2b 20 20 20 20 73 74 61 74 69 63 20 69 s;.+ static i
6040: 6e 74 20 75 73 65 4d 6f 6e 6f 43 6c 6f 63 6b 20 nt useMonoClock
6050: 3d 20 2d 31 3b 0a 2b 0a 2b 20 20 20 20 69 66 20 = -1;.+.+ if
6060: 28 75 73 65 4d 6f 6e 6f 43 6c 6f 63 6b 29 20 7b (useMonoClock) {
6070: 0a 2b 09 72 65 74 20 3d 20 28 63 6c 6f 63 6b 5f .+.ret = (clock_
6080: 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f gettime(CLOCK_MO
6090: 4e 4f 54 4f 4e 49 43 2c 20 26 74 73 29 20 3d 3d NOTONIC, &ts) ==
60a0: 20 30 29 3b 0a 2b 09 69 66 20 28 75 73 65 4d 6f 0);.+.if (useMo
60b0: 6e 6f 43 6c 6f 63 6b 20 3c 20 30 29 20 7b 0a 2b noClock < 0) {.+
60c0: 09 20 20 20 20 75 73 65 4d 6f 6e 6f 43 6c 6f 63 . useMonoCloc
60d0: 6b 20 3d 20 72 65 74 3b 0a 2b 09 20 20 20 20 69 k = ret;.+. i
60e0: 66 20 28 21 72 65 74 29 20 7b 0a 2b 09 09 28 76 f (!ret) {.+..(v
60f0: 6f 69 64 29 20 63 6c 6f 63 6b 5f 67 65 74 74 69 oid) clock_getti
6100: 6d 65 28 43 4c 4f 43 4b 5f 52 45 41 4c 54 49 4d me(CLOCK_REALTIM
6110: 45 2c 20 26 74 73 29 3b 0a 2b 09 20 20 20 20 7d E, &ts);.+. }
6120: 0a 2b 09 7d 20 65 6c 73 65 20 69 66 20 28 21 72 .+.} else if (!r
6130: 65 74 29 20 7b 0a 2b 09 20 20 20 20 54 63 6c 5f et) {.+. Tcl_
6140: 50 61 6e 69 63 28 22 63 6c 6f 63 6b 5f 67 65 74 Panic("clock_get
6150: 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 time(CLOCK_MONOT
6160: 4f 4e 49 43 29 20 66 61 69 6c 65 64 22 29 3b 0a ONIC) failed");.
6170: 2b 09 7d 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 +.}.+ } else
6180: 7b 0a 2b 09 28 76 6f 69 64 29 20 63 6c 6f 63 6b {.+.(void) clock
6190: 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 52 _gettime(CLOCK_R
61a0: 45 41 4c 54 49 4d 45 2c 20 26 74 73 29 3b 0a 2b EALTIME, &ts);.+
61b0: 09 72 65 74 20 3d 20 30 3b 0a 2b 20 20 20 20 7d .ret = 0;.+ }
61c0: 0a 2b 20 20 20 20 74 69 6d 65 50 74 72 2d 3e 73 .+ timePtr->s
61d0: 65 63 20 3d 20 74 73 2e 74 76 5f 73 65 63 3b 0a ec = ts.tv_sec;.
61e0: 2b 20 20 20 20 74 69 6d 65 50 74 72 2d 3e 75 73 + timePtr->us
61f0: 65 63 20 3d 20 74 73 2e 74 76 5f 6e 73 65 63 20 ec = ts.tv_nsec
6200: 2f 20 31 30 30 30 3b 0a 2b 20 20 20 20 72 65 74 / 1000;.+ ret
6210: 75 72 6e 20 72 65 74 3b 0a 2b 23 65 6c 73 65 0a urn ret;.+#else.
6220: 2b 20 20 20 20 73 74 72 75 63 74 20 74 69 6d 65 + struct time
6230: 76 61 6c 20 74 76 3b 0a 2b 0a 2b 20 20 20 20 28 val tv;.+.+ (
6240: 76 6f 69 64 29 20 67 65 74 74 69 6d 65 6f 66 64 void) gettimeofd
6250: 61 79 28 26 74 76 2c 20 4e 55 4c 4c 29 3b 0a 2b ay(&tv, NULL);.+
6260: 20 20 20 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 timePtr->sec
6270: 20 3d 20 74 76 2e 74 76 5f 73 65 63 3b 0a 2b 20 = tv.tv_sec;.+
6280: 20 20 20 74 69 6d 65 50 74 72 2d 3e 75 73 65 63 timePtr->usec
6290: 20 3d 20 74 76 2e 74 76 5f 75 73 65 63 3b 0a 2b = tv.tv_usec;.+
62a0: 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a 2b 23 return 0;.+#
62b0: 65 6e 64 69 66 0a 2b 7d 0a 20 0c 0a 20 2f 2a 0a endif.+}. .. /*.
62c0: 20 20 2a 20 4c 6f 63 61 6c 20 56 61 72 69 61 62 * Local Variab
62d0: 6c 65 73 3a 0a 20 20 2a 20 6d 6f 64 65 3a 20 63 les:. * mode: c
62e0: 0a 20 20 2a 20 63 2d 62 61 73 69 63 2d 6f 66 66 . * c-basic-off
62f0: 73 65 74 3a 20 34 0a 20 20 2a 20 66 69 6c 6c 2d set: 4. * fill-
6300: 63 6f 6c 75 6d 6e 3a 20 37 38 0a 20 20 2a 20 45 column: 78. * E
6310: 6e 64 3a 0a 20 20 2a 2f 0a 0a 49 6e 64 65 78 3a nd:. */..Index:
6320: 20 77 69 6e 2f 63 6f 6e 66 69 67 75 72 65 0a 3d win/configure.=
6330: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6340: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6350: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6360: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6370: 3d 0a 2d 2d 2d 20 77 69 6e 2f 63 6f 6e 66 69 67 =.--- win/config
6380: 75 72 65 0a 2b 2b 2b 20 77 69 6e 2f 63 6f 6e 66 ure.+++ win/conf
6390: 69 67 75 72 65 0a 40 40 20 2d 38 35 31 2c 31 30 igure.@@ -851,10
63a0: 20 2b 38 35 31 2c 31 31 20 40 40 0a 20 4f 70 74 +851,11 @@. Opt
63b0: 69 6f 6e 61 6c 20 50 61 63 6b 61 67 65 73 3a 0a ional Packages:.
63c0: 20 20 20 2d 2d 77 69 74 68 2d 50 41 43 4b 41 47 --with-PACKAG
63d0: 45 5b 3d 41 52 47 5d 20 20 20 20 75 73 65 20 50 E[=ARG] use P
63e0: 41 43 4b 41 47 45 20 5b 41 52 47 3d 79 65 73 5d ACKAGE [ARG=yes]
63f0: 0a 20 20 20 2d 2d 77 69 74 68 6f 75 74 2d 50 41 . --without-PA
6400: 43 4b 41 47 45 20 20 20 20 20 20 20 64 6f 20 6e CKAGE do n
6410: 6f 74 20 75 73 65 20 50 41 43 4b 41 47 45 20 28 ot use PACKAGE (
6420: 73 61 6d 65 20 61 73 20 2d 2d 77 69 74 68 2d 50 same as --with-P
6430: 41 43 4b 41 47 45 3d 6e 6f 29 0a 20 20 20 2d 2d ACKAGE=no). --
6440: 77 69 74 68 2d 65 6e 63 6f 64 69 6e 67 20 20 20 with-encoding
6450: 20 20 20 20 20 20 65 6e 63 6f 64 69 6e 67 20 66 encoding f
6460: 6f 72 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e or configuration
6470: 20 76 61 6c 75 65 73 0a 20 20 20 2d 2d 77 69 74 values. --wit
6480: 68 2d 63 65 6c 69 62 3d 44 49 52 20 20 20 20 20 h-celib=DIR
6490: 20 20 20 75 73 65 20 57 69 6e 64 6f 77 73 2f 43 use Windows/C
64a0: 45 20 73 75 70 70 6f 72 74 20 6c 69 62 72 61 72 E support librar
64b0: 79 20 66 72 6f 6d 20 44 49 52 0a 2b 20 20 2d 2d y from DIR.+ --
64c0: 77 69 74 68 2d 74 69 63 6b 63 6f 75 6e 74 20 20 with-tickcount
64d0: 20 20 20 20 20 20 75 73 65 20 47 65 74 54 69 63 use GetTic
64e0: 6b 43 6f 75 6e 74 20 66 6f 72 20 74 69 6d 65 72 kCount for timer
64f0: 73 2c 20 74 75 72 6e 73 20 6f 66 66 20 54 49 50 s, turns off TIP
6500: 20 23 32 33 33 0a 20 0a 20 53 6f 6d 65 20 69 6e #233. . Some in
6510: 66 6c 75 65 6e 74 69 61 6c 20 65 6e 76 69 72 6f fluential enviro
6520: 6e 6d 65 6e 74 20 76 61 72 69 61 62 6c 65 73 3a nment variables:
6530: 0a 20 20 20 43 43 20 20 20 20 20 20 20 20 20 20 . CC
6540: 43 20 63 6f 6d 70 69 6c 65 72 20 63 6f 6d 6d 61 C compiler comma
6550: 6e 64 0a 20 20 20 43 46 4c 41 47 53 20 20 20 20 nd. CFLAGS
6560: 20 20 43 20 63 6f 6d 70 69 6c 65 72 20 66 6c 61 C compiler fla
6570: 67 73 0a 20 20 20 4c 44 46 4c 41 47 53 20 20 20 gs. LDFLAGS
6580: 20 20 6c 69 6e 6b 65 72 20 66 6c 61 67 73 2c 20 linker flags,
6590: 65 2e 67 2e 20 2d 4c 3c 6c 69 62 20 64 69 72 3e e.g. -L<lib dir>
65a0: 20 69 66 20 79 6f 75 20 68 61 76 65 20 6c 69 62 if you have lib
65b0: 72 61 72 69 65 73 20 69 6e 20 61 0a 40 40 20 2d raries in a.@@ -
65c0: 34 34 30 35 2c 31 30 20 2b 34 34 30 36 2c 32 37 4405,10 +4406,27
65d0: 20 40 40 0a 20 0a 20 63 61 74 20 3e 3e 63 6f 6e @@. . cat >>con
65e0: 66 64 65 66 73 2e 68 20 3c 3c 5c 5f 41 43 45 4f fdefs.h <<\_ACEO
65f0: 46 0a 20 23 64 65 66 69 6e 65 20 48 41 56 45 5f F. #define HAVE_
6600: 5a 4c 49 42 20 31 0a 20 5f 41 43 45 4f 46 0a 20 ZLIB 1. _ACEOF.
6610: 0a 2b 0a 2b 23 20 43 68 65 63 6b 20 77 68 65 74 .+.+# Check whet
6620: 68 65 72 20 2d 2d 77 69 74 68 2d 74 69 63 6b 63 her --with-tickc
6630: 6f 75 6e 74 20 6f 72 20 2d 2d 77 69 74 68 6f 75 ount or --withou
6640: 74 2d 74 69 63 6b 63 6f 75 6e 74 20 77 61 73 20 t-tickcount was
6650: 67 69 76 65 6e 2e 0a 2b 69 66 20 74 65 73 74 20 given..+if test
6660: 22 24 7b 77 69 74 68 5f 74 69 63 6b 63 6f 75 6e "${with_tickcoun
6670: 74 2b 73 65 74 7d 22 20 3d 20 73 65 74 3b 20 74 t+set}" = set; t
6680: 68 65 6e 0a 2b 20 20 77 69 74 68 76 61 6c 3d 22 hen.+ withval="
6690: 24 77 69 74 68 5f 74 69 63 6b 63 6f 75 6e 74 22 $with_tickcount"
66a0: 0a 2b 20 20 74 63 6c 5f 6f 6b 3d 24 77 69 74 68 .+ tcl_ok=$with
66b0: 76 61 6c 0a 2b 65 6c 73 65 0a 2b 20 20 74 63 6c val.+else.+ tcl
66c0: 5f 6f 6b 3d 6e 6f 0a 2b 66 69 3b 0a 2b 65 63 68 _ok=no.+fi;.+ech
66d0: 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 4e 45 4e o "$as_me:$LINEN
66e0: 4f 3a 20 72 65 73 75 6c 74 3a 20 24 74 63 6c 5f O: result: $tcl_
66f0: 6f 6b 22 20 3e 26 35 0a 2b 65 63 68 6f 20 22 24 ok" >&5.+echo "$
6700: 7b 45 43 48 4f 5f 54 7d 24 74 63 6c 5f 6f 6b 22 {ECHO_T}$tcl_ok"
6710: 20 3e 26 36 0a 2b 69 66 20 74 65 73 74 20 24 74 >&6.+if test $t
6720: 63 6c 5f 6f 6b 20 3d 20 79 65 73 3b 20 74 68 65 cl_ok = yes; the
6730: 6e 0a 2b 0a 2b 63 61 74 20 3e 3e 63 6f 6e 66 64 n.+.+cat >>confd
6740: 65 66 73 2e 68 20 3c 3c 5c 5f 41 43 45 4f 46 0a efs.h <<\_ACEOF.
6750: 2b 23 64 65 66 69 6e 65 20 57 49 4e 33 32 5f 55 +#define WIN32_U
6760: 53 45 5f 54 49 43 4b 43 4f 55 4e 54 20 31 0a 2b SE_TICKCOUNT 1.+
6770: 5f 41 43 45 4f 46 0a 2b 0a 2b 66 69 0a 20 0a 20 _ACEOF.+.+fi. .
6780: 65 63 68 6f 20 22 24 61 73 5f 6d 65 3a 24 4c 49 echo "$as_me:$LI
6790: 4e 45 4e 4f 3a 20 63 68 65 63 6b 69 6e 67 20 66 NENO: checking f
67a0: 6f 72 20 69 6e 74 70 74 72 5f 74 22 20 3e 26 35 or intptr_t" >&5
67b0: 0a 20 65 63 68 6f 20 24 45 43 48 4f 5f 4e 20 22 . echo $ECHO_N "
67c0: 63 68 65 63 6b 69 6e 67 20 66 6f 72 20 69 6e 74 checking for int
67d0: 70 74 72 5f 74 2e 2e 2e 20 24 45 43 48 4f 5f 43 ptr_t... $ECHO_C
67e0: 22 20 3e 26 36 0a 20 69 66 20 74 65 73 74 20 22 " >&6. if test "
67f0: 24 7b 61 63 5f 63 76 5f 74 79 70 65 5f 69 6e 74 ${ac_cv_type_int
6800: 70 74 72 5f 74 2b 73 65 74 7d 22 20 3d 20 73 65 ptr_t+set}" = se
6810: 74 3b 20 74 68 65 6e 0a 20 20 20 65 63 68 6f 20 t; then. echo
6820: 24 45 43 48 4f 5f 4e 20 22 28 63 61 63 68 65 64 $ECHO_N "(cached
6830: 29 20 24 45 43 48 4f 5f 43 22 20 3e 26 36 0a 0a ) $ECHO_C" >&6..
6840: 49 6e 64 65 78 3a 20 77 69 6e 2f 63 6f 6e 66 69 Index: win/confi
6850: 67 75 72 65 2e 69 6e 0a 3d 3d 3d 3d 3d 3d 3d 3d gure.in.========
6860: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6870: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6880: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6890: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 77 ==========.--- w
68a0: 69 6e 2f 63 6f 6e 66 69 67 75 72 65 2e 69 6e 0a in/configure.in.
68b0: 2b 2b 2b 20 77 69 6e 2f 63 6f 6e 66 69 67 75 72 +++ win/configur
68c0: 65 2e 69 6e 0a 40 40 20 2d 31 33 39 2c 31 30 20 e.in.@@ -139,10
68d0: 2b 31 33 39 2c 31 39 20 40 40 0a 20 20 20 5d 29 +139,19 @@. ])
68e0: 0a 20 5d 2c 20 5b 0a 20 20 20 41 43 5f 53 55 42 . ], [. AC_SUB
68f0: 53 54 28 5a 4c 49 42 5f 4f 42 4a 53 2c 5b 5c 24 ST(ZLIB_OBJS,[\$
6900: 7b 5a 4c 49 42 5f 4f 42 4a 53 7d 5d 29 0a 20 5d {ZLIB_OBJS}]). ]
6910: 29 0a 20 41 43 5f 44 45 46 49 4e 45 28 48 41 56 ). AC_DEFINE(HAV
6920: 45 5f 5a 4c 49 42 2c 20 31 2c 20 5b 49 73 20 74 E_ZLIB, 1, [Is t
6930: 68 65 72 65 20 61 6e 20 69 6e 73 74 61 6c 6c 65 here an installe
6940: 64 20 7a 6c 69 62 3f 5d 29 0a 2b 0a 2b 41 43 5f d zlib?]).+.+AC_
6950: 41 52 47 5f 57 49 54 48 28 74 69 63 6b 63 6f 75 ARG_WITH(tickcou
6960: 6e 74 2c 0a 2b 20 20 20 20 41 43 5f 48 45 4c 50 nt,.+ AC_HELP
6970: 5f 53 54 52 49 4e 47 28 5b 2d 2d 77 69 74 68 2d _STRING([--with-
6980: 74 69 63 6b 63 6f 75 6e 74 5d 2c 0a 2b 09 5b 75 tickcount],.+.[u
6990: 73 65 20 47 65 74 54 69 63 6b 43 6f 75 6e 74 20 se GetTickCount
69a0: 66 6f 72 20 74 69 6d 65 72 73 2c 20 74 75 72 6e for timers, turn
69b0: 73 20 6f 66 66 20 54 49 50 20 23 32 33 33 5d 29 s off TIP #233])
69c0: 2c 0a 2b 20 20 20 20 5b 74 63 6c 5f 6f 6b 3d 24 ,.+ [tcl_ok=$
69d0: 77 69 74 68 76 61 6c 5d 2c 20 5b 74 63 6c 5f 6f withval], [tcl_o
69e0: 6b 3d 6e 6f 5d 29 0a 2b 41 43 5f 4d 53 47 5f 52 k=no]).+AC_MSG_R
69f0: 45 53 55 4c 54 28 5b 24 74 63 6c 5f 6f 6b 5d 29 ESULT([$tcl_ok])
6a00: 0a 2b 69 66 20 74 65 73 74 20 24 74 63 6c 5f 6f .+if test $tcl_o
6a10: 6b 20 3d 20 79 65 73 3b 20 74 68 65 6e 0a 2b 20 k = yes; then.+
6a20: 20 20 20 41 43 5f 44 45 46 49 4e 45 28 57 49 4e AC_DEFINE(WIN
6a30: 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 32_USE_TICKCOUNT
6a40: 2c 20 31 2c 20 5b 55 73 65 20 47 65 74 54 69 63 , 1, [Use GetTic
6a50: 6b 43 6f 75 6e 74 20 66 6f 72 20 74 69 6d 65 72 kCount for timer
6a60: 73 3f 5d 29 0a 2b 66 69 0a 20 0a 20 41 43 5f 43 s?]).+fi. . AC_C
6a70: 48 45 43 4b 5f 54 59 50 45 28 5b 69 6e 74 70 74 HECK_TYPE([intpt
6a80: 72 5f 74 5d 2c 20 5b 0a 20 20 20 20 20 41 43 5f r_t], [. AC_
6a90: 44 45 46 49 4e 45 28 5b 48 41 56 45 5f 49 4e 54 DEFINE([HAVE_INT
6aa0: 50 54 52 5f 54 5d 2c 20 31 2c 20 5b 44 6f 20 77 PTR_T], 1, [Do w
6ab0: 65 20 68 61 76 65 20 74 68 65 20 69 6e 74 70 74 e have the intpt
6ac0: 72 5f 74 20 74 79 70 65 3f 5d 29 5d 2c 20 5b 0a r_t type?])], [.
6ad0: 20 20 20 20 20 41 43 5f 43 41 43 48 45 5f 43 48 AC_CACHE_CH
6ae0: 45 43 4b 28 5b 66 6f 72 20 70 6f 69 6e 74 65 72 ECK([for pointer
6af0: 2d 73 69 7a 65 20 73 69 67 6e 65 64 20 69 6e 74 -size signed int
6b00: 65 67 65 72 20 74 79 70 65 5d 2c 20 74 63 6c 5f eger type], tcl_
6b10: 63 76 5f 69 6e 74 70 74 72 5f 74 2c 20 5b 0a 20 cv_intptr_t, [.
6b20: 20 20 20 20 66 6f 72 20 74 63 6c 5f 63 76 5f 69 for tcl_cv_i
6b30: 6e 74 70 74 72 5f 74 20 69 6e 20 22 69 6e 74 22 ntptr_t in "int"
6b40: 20 22 6c 6f 6e 67 22 20 22 6c 6f 6e 67 20 6c 6f "long" "long lo
6b50: 6e 67 22 20 6e 6f 6e 65 3b 20 64 6f 0a 0a 49 6e ng" none; do..In
6b60: 64 65 78 3a 20 77 69 6e 2f 74 63 6c 57 69 6e 49 dex: win/tclWinI
6b70: 6e 69 74 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d nit.c.==========
6b80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6b90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6ba0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6bb0: 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 77 69 6e ========.--- win
6bc0: 2f 74 63 6c 57 69 6e 49 6e 69 74 2e 63 0a 2b 2b /tclWinInit.c.++
6bd0: 2b 20 77 69 6e 2f 74 63 6c 57 69 6e 49 6e 69 74 + win/tclWinInit
6be0: 2e 63 0a 40 40 20 2d 31 30 35 2c 31 30 20 2b 31 .c.@@ -105,10 +1
6bf0: 30 35 2c 31 39 20 40 40 0a 20 73 74 61 74 69 63 05,19 @@. static
6c00: 20 50 72 6f 63 65 73 73 47 6c 6f 62 61 6c 56 61 ProcessGlobalVa
6c10: 6c 75 65 20 73 6f 75 72 63 65 4c 69 62 72 61 72 lue sourceLibrar
6c20: 79 44 69 72 20 3d 0a 20 09 7b 30 2c 20 30 2c 20 yDir =. .{0, 0,
6c30: 4e 55 4c 4c 2c 20 4e 55 4c 4c 2c 20 49 6e 69 74 NULL, NULL, Init
6c40: 69 61 6c 69 7a 65 53 6f 75 72 63 65 4c 69 62 72 ializeSourceLibr
6c50: 61 72 79 44 69 72 2c 20 4e 55 4c 4c 2c 20 4e 55 aryDir, NULL, NU
6c60: 4c 4c 7d 3b 0a 20 0a 20 73 74 61 74 69 63 20 76 LL};. . static v
6c70: 6f 69 64 09 09 41 70 70 65 6e 64 45 6e 76 69 72 oid..AppendEnvir
6c80: 6f 6e 6d 65 6e 74 28 54 63 6c 5f 4f 62 6a 20 2a onment(Tcl_Obj *
6c90: 6c 69 73 74 50 74 72 2c 20 63 6f 6e 73 74 20 63 listPtr, const c
6ca0: 68 61 72 20 2a 6c 69 62 29 3b 0a 20 73 74 61 74 har *lib);. stat
6cb0: 69 63 20 69 6e 74 09 09 54 6f 55 74 66 28 63 6f ic int..ToUtf(co
6cc0: 6e 73 74 20 57 43 48 41 52 20 2a 77 53 72 63 2c nst WCHAR *wSrc,
6cd0: 20 63 68 61 72 20 2a 64 73 74 29 3b 0a 2b 0a 2b char *dst);.+.+
6ce0: 23 69 66 64 65 66 20 57 49 4e 33 32 5f 55 53 45 #ifdef WIN32_USE
6cf0: 5f 54 49 43 4b 43 4f 55 4e 54 0a 2b 74 79 70 65 _TICKCOUNT.+type
6d00: 64 65 66 20 55 4c 4f 4e 47 4c 4f 4e 47 20 57 49 def ULONGLONG WI
6d10: 4e 41 50 49 20 28 47 65 74 54 69 63 6b 43 6f 75 NAPI (GetTickCou
6d20: 6e 74 36 34 50 72 6f 63 29 28 76 6f 69 64 29 3b nt64Proc)(void);
6d30: 0a 2b 73 74 61 74 69 63 20 47 65 74 54 69 63 6b .+static GetTick
6d40: 43 6f 75 6e 74 36 34 50 72 6f 63 20 2a 47 65 74 Count64Proc *Get
6d50: 54 69 63 6b 43 6f 75 6e 74 36 34 50 72 6f 63 50 TickCount64ProcP
6d60: 74 72 20 3d 20 4e 55 4c 4c 3b 0a 2b 73 74 61 74 tr = NULL;.+stat
6d70: 69 63 20 43 52 49 54 49 43 41 4c 5f 53 45 43 54 ic CRITICAL_SECT
6d80: 49 4f 4e 20 54 69 63 6b 4d 75 74 65 78 3b 0a 2b ION TickMutex;.+
6d90: 73 74 61 74 69 63 20 44 57 4f 52 44 20 54 69 63 static DWORD Tic
6da0: 6b 4f 66 66 73 65 74 2c 20 4c 61 73 74 54 69 63 kOffset, LastTic
6db0: 6b 3b 0a 2b 73 74 61 74 69 63 20 55 4c 4f 4e 47 k;.+static ULONG
6dc0: 4c 4f 4e 47 20 54 69 63 6b 55 70 70 65 72 3b 0a LONG TickUpper;.
6dd0: 2b 23 65 6e 64 69 66 0a 2b 0a 20 0c 0a 20 2f 2a +#endif.+. .. /*
6de0: 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d . *------------
6df0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6e00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
6e30: 20 20 2a 0a 20 20 2a 20 54 63 6c 70 49 6e 69 74 *. * TclpInit
6e40: 50 6c 61 74 66 6f 72 6d 20 2d 2d 0a 40 40 20 2d Platform --.@@ -
6e50: 31 33 30 2c 31 38 20 2b 31 33 39 2c 34 34 20 40 130,18 +139,44 @
6e60: 40 0a 20 76 6f 69 64 0a 20 54 63 6c 70 49 6e 69 @. void. TclpIni
6e70: 74 50 6c 61 74 66 6f 72 6d 28 76 6f 69 64 29 0a tPlatform(void).
6e80: 20 7b 0a 20 20 20 20 20 57 53 41 44 41 54 41 20 {. WSADATA
6e90: 77 73 61 44 61 74 61 3b 0a 20 20 20 20 20 57 4f wsaData;. WO
6ea0: 52 44 20 77 56 65 72 73 69 6f 6e 52 65 71 75 65 RD wVersionReque
6eb0: 73 74 65 64 20 3d 20 4d 41 4b 45 57 4f 52 44 28 sted = MAKEWORD(
6ec0: 32 2c 20 32 29 3b 0a 2b 23 69 66 64 65 66 20 57 2, 2);.+#ifdef W
6ed0: 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 IN32_USE_TICKCOU
6ee0: 4e 54 0a 2b 20 20 20 20 48 4d 4f 44 55 4c 45 20 NT.+ HMODULE
6ef0: 68 61 6e 64 6c 65 3b 0a 2b 23 65 6e 64 69 66 0a handle;.+#endif.
6f00: 20 0a 20 20 20 20 20 74 63 6c 50 6c 61 74 66 6f . tclPlatfo
6f10: 72 6d 20 3d 20 54 43 4c 5f 50 4c 41 54 46 4f 52 rm = TCL_PLATFOR
6f20: 4d 5f 57 49 4e 44 4f 57 53 3b 0a 20 0a 20 20 20 M_WINDOWS;. .
6f30: 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 49 6e 69 /*. * Ini
6f40: 74 69 61 6c 69 7a 65 20 74 68 65 20 77 69 6e 73 tialize the wins
6f50: 6f 63 6b 20 6c 69 62 72 61 72 79 2e 20 4f 6e 20 ock library. On
6f60: 57 69 6e 64 6f 77 73 20 58 50 20 61 6e 64 20 68 Windows XP and h
6f70: 69 67 68 65 72 20 74 68 69 73 0a 20 20 20 20 20 igher this.
6f80: 20 2a 20 63 61 6e 20 6e 65 76 65 72 20 66 61 69 * can never fai
6f90: 6c 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 20 20 20 l.. */.
6fa0: 20 57 53 41 53 74 61 72 74 75 70 28 77 56 65 72 WSAStartup(wVer
6fb0: 73 69 6f 6e 52 65 71 75 65 73 74 65 64 2c 20 26 sionRequested, &
6fc0: 77 73 61 44 61 74 61 29 3b 0a 2b 0a 2b 23 69 66 wsaData);.+.+#if
6fd0: 64 65 66 20 57 49 4e 33 32 5f 55 53 45 5f 54 49 def WIN32_USE_TI
6fe0: 43 4b 43 4f 55 4e 54 0a 2b 20 20 20 20 2f 2a 0a CKCOUNT.+ /*.
6ff0: 2b 20 20 20 20 20 2a 20 43 68 65 63 6b 20 66 6f + * Check fo
7000: 72 20 61 76 61 69 6c 61 62 69 6c 69 74 79 20 6f r availability o
7010: 66 20 74 68 65 20 47 65 74 54 69 63 6b 43 6f 75 f the GetTickCou
7020: 6e 74 36 34 28 29 20 41 50 49 2e 0a 2b 20 20 20 nt64() API..+
7030: 20 20 2a 2f 0a 2b 0a 2b 20 20 20 20 68 61 6e 64 */.+.+ hand
7040: 6c 65 20 3d 20 47 65 74 4d 6f 64 75 6c 65 48 61 le = GetModuleHa
7050: 6e 64 6c 65 41 28 22 4b 45 52 4e 45 4c 33 32 22 ndleA("KERNEL32"
7060: 29 3b 0a 2b 20 20 20 20 69 66 20 28 68 61 6e 64 );.+ if (hand
7070: 6c 65 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 le != NULL) {.+.
7080: 47 65 74 54 69 63 6b 43 6f 75 6e 74 36 34 50 72 GetTickCount64Pr
7090: 6f 63 50 74 72 20 3d 20 28 47 65 74 54 69 63 6b ocPtr = (GetTick
70a0: 43 6f 75 6e 74 36 34 50 72 6f 63 20 2a 29 0a 2b Count64Proc *).+
70b0: 09 09 47 65 74 50 72 6f 63 41 64 64 72 65 73 73 ..GetProcAddress
70c0: 28 68 61 6e 64 6c 65 2c 20 22 47 65 74 54 69 63 (handle, "GetTic
70d0: 6b 43 6f 75 6e 74 36 34 22 29 3b 0a 2b 20 20 20 kCount64");.+
70e0: 20 7d 0a 2b 0a 2b 20 20 20 20 49 6e 69 74 69 61 }.+.+ Initia
70f0: 6c 69 7a 65 43 72 69 74 69 63 61 6c 53 65 63 74 lizeCriticalSect
7100: 69 6f 6e 28 26 54 69 63 6b 4d 75 74 65 78 29 3b ion(&TickMutex);
7110: 0a 2b 0a 2b 20 20 20 20 2f 2a 0a 2b 20 20 20 20 .+.+ /*.+
7120: 20 2a 20 46 6f 72 63 65 20 61 20 77 72 61 70 20 * Force a wrap
7130: 61 72 6f 75 6e 64 20 77 69 74 68 69 6e 20 74 68 around within th
7140: 65 20 66 69 72 73 74 20 66 65 77 20 73 65 63 6f e first few seco
7150: 6e 64 73 20 77 68 65 6e 0a 2b 20 20 20 20 20 2a nds when.+ *
7160: 20 77 65 20 6e 65 65 64 20 74 6f 20 66 61 6c 6c we need to fall
7170: 20 62 61 63 6b 20 74 6f 20 47 65 74 54 69 63 6b back to GetTick
7180: 43 6f 75 6e 74 28 29 2c 20 65 2e 67 2e 20 6f 6e Count(), e.g. on
7190: 20 58 50 2e 0a 2b 20 20 20 20 20 2a 2f 0a 2b 0a XP..+ */.+.
71a0: 2b 20 20 20 20 54 69 63 6b 4f 66 66 73 65 74 20 + TickOffset
71b0: 3d 20 30 78 66 66 66 66 65 30 30 30 20 2d 20 47 = 0xffffe000 - G
71c0: 65 74 54 69 63 6b 43 6f 75 6e 74 28 29 3b 0a 2b etTickCount();.+
71d0: 20 20 20 20 4c 61 73 74 54 69 63 6b 20 3d 20 54 LastTick = T
71e0: 69 63 6b 4f 66 66 73 65 74 3b 0a 2b 20 20 20 20 ickOffset;.+
71f0: 54 69 63 6b 55 70 70 65 72 20 3d 20 30 3b 0a 2b TickUpper = 0;.+
7200: 23 65 6e 64 69 66 0a 20 0a 20 23 69 66 64 65 66 #endif. . #ifdef
7210: 20 53 54 41 54 49 43 5f 42 55 49 4c 44 0a 20 20 STATIC_BUILD.
7220: 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 49 66 /*. * If
7230: 20 77 65 20 61 72 65 20 69 6e 20 61 20 73 74 61 we are in a sta
7240: 74 69 63 61 6c 6c 79 20 6c 69 6e 6b 65 64 20 65 tically linked e
7250: 78 65 63 75 74 61 62 6c 65 2c 20 74 68 65 6e 20 xecutable, then
7260: 77 65 20 6e 65 65 64 20 74 6f 20 65 78 70 6c 69 we need to expli
7270: 63 69 74 6c 79 0a 20 20 20 20 20 20 2a 20 69 6e citly. * in
7280: 69 74 69 61 6c 69 7a 65 20 74 68 65 20 57 69 6e itialize the Win
7290: 64 6f 77 73 20 66 75 6e 63 74 69 6f 6e 20 74 61 dows function ta
72a0: 62 6c 65 73 20 68 65 72 65 20 73 69 6e 63 65 20 bles here since
72b0: 44 6c 6c 4d 61 69 6e 28 29 20 77 69 6c 6c 20 6e DllMain() will n
72c0: 6f 74 20 62 65 0a 40 40 20 2d 37 30 39 2c 31 33 ot be.@@ -709,13
72d0: 20 2b 37 34 34 2c 36 32 20 40 40 0a 20 20 20 64 +744,62 @@. d
72e0: 6f 6e 65 3a 0a 20 20 20 20 20 54 63 6c 5f 44 53 one:. Tcl_DS
72f0: 74 72 69 6e 67 46 72 65 65 28 26 65 6e 76 53 74 tringFree(&envSt
7300: 72 69 6e 67 29 3b 0a 20 20 20 20 20 63 6b 66 72 ring);. ckfr
7310: 65 65 28 6e 61 6d 65 55 70 70 65 72 29 3b 0a 20 ee(nameUpper);.
7320: 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c return resul
7330: 74 3b 0a 20 7d 0a 2b 0c 0a 2b 2f 2a 0a 2b 20 2a t;. }.+..+/*.+ *
7340: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7350: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7360: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7370: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7380: 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 0a 2b 20 2a 20 54 ------.+ *.+ * T
7390: 63 6c 70 47 65 74 4d 6f 6e 6f 6e 6f 74 69 63 54 clpGetMononoticT
73a0: 69 6d 65 20 2d 2d 0a 2b 20 2a 0a 2b 20 2a 09 4c ime --.+ *.+ *.L
73b0: 69 6b 65 20 54 63 6c 5f 47 65 74 54 69 6d 65 28 ike Tcl_GetTime(
73c0: 29 20 62 75 74 20 72 65 74 75 72 6e 20 61 20 6d ) but return a m
73d0: 6f 6e 6f 74 6f 6e 69 63 20 63 6c 6f 63 6b 20 73 onotonic clock s
73e0: 6f 75 72 63 65 2c 0a 2b 20 2a 09 69 66 20 70 6f ource,.+ *.if po
73f0: 73 73 69 62 6c 65 2e 20 4f 74 68 65 72 77 69 73 ssible. Otherwis
7400: 65 20 66 61 6c 6c 20 62 61 63 6b 20 74 6f 20 72 e fall back to r
7410: 65 61 6c 20 28 77 61 6c 6c 20 63 6c 6f 63 6b 29 eal (wall clock)
7420: 20 74 69 6d 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 52 time..+ *.+ * R
7430: 65 73 75 6c 74 73 3a 0a 2b 20 2a 09 31 20 69 66 esults:.+ *.1 if
7440: 20 6d 6f 6e 6f 74 6f 6e 69 63 2c 20 30 20 6f 74 monotonic, 0 ot
7450: 68 65 72 77 69 73 65 2e 0a 2b 20 2a 0a 2b 20 2a herwise..+ *.+ *
7460: 20 53 69 64 65 20 65 66 66 65 63 74 73 3a 0a 2b Side effects:.+
7470: 20 2a 09 4e 6f 6e 65 2e 0a 2b 20 2a 0a 2b 20 2a *.None..+ *.+ *
7480: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7490: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
74a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
74b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
74c0: 2d 2d 2d 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a 2b 69 ------.+ */.+.+i
74d0: 6e 74 0a 2b 54 63 6c 70 47 65 74 4d 6f 6e 6f 74 nt.+TclpGetMonot
74e0: 6f 6e 69 63 54 69 6d 65 28 54 63 6c 5f 54 69 6d onicTime(Tcl_Tim
74f0: 65 20 2a 74 69 6d 65 50 74 72 29 0a 2b 7b 0a 2b e *timePtr).+{.+
7500: 23 69 66 64 65 66 20 57 49 4e 33 32 5f 55 53 45 #ifdef WIN32_USE
7510: 5f 54 49 43 4b 43 4f 55 4e 54 0a 2b 20 20 20 20 _TICKCOUNT.+
7520: 55 4c 4f 4e 47 4c 4f 4e 47 20 6d 73 3b 0a 2b 20 ULONGLONG ms;.+
7530: 20 20 20 44 57 4f 52 44 20 74 69 63 6b 3b 0a 2b DWORD tick;.+
7540: 0a 2b 20 20 20 20 69 66 20 28 47 65 74 54 69 63 .+ if (GetTic
7550: 6b 43 6f 75 6e 74 36 34 50 72 6f 63 50 74 72 20 kCount64ProcPtr
7560: 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 6d 73 20 != NULL) {.+.ms
7570: 3d 20 47 65 74 54 69 63 6b 43 6f 75 6e 74 36 34 = GetTickCount64
7580: 50 72 6f 63 50 74 72 28 29 3b 0a 2b 20 20 20 20 ProcPtr();.+
7590: 7d 20 65 6c 73 65 20 7b 0a 2b 09 2f 2a 0a 2b 09 } else {.+./*.+.
75a0: 20 2a 20 45 6d 75 6c 61 74 65 20 36 34 20 62 69 * Emulate 64 bi
75b0: 74 20 77 69 64 65 20 74 69 63 6b 20 63 6f 75 6e t wide tick coun
75c0: 74 65 72 2c 20 65 2e 67 2e 20 6f 6e 20 58 50 2e ter, e.g. on XP.
75d0: 0a 2b 09 20 2a 2f 0a 2b 0a 2b 09 45 6e 74 65 72 .+. */.+.+.Enter
75e0: 43 72 69 74 69 63 61 6c 53 65 63 74 69 6f 6e 28 CriticalSection(
75f0: 26 54 69 63 6b 4d 75 74 65 78 29 3b 0a 2b 09 74 &TickMutex);.+.t
7600: 69 63 6b 20 3d 20 47 65 74 54 69 63 6b 43 6f 75 ick = GetTickCou
7610: 6e 74 28 29 20 2b 20 54 69 63 6b 4f 66 66 73 65 nt() + TickOffse
7620: 74 3b 0a 2b 09 69 66 20 28 28 4c 61 73 74 54 69 t;.+.if ((LastTi
7630: 63 6b 20 26 20 30 78 38 30 30 30 30 30 30 30 29 ck & 0x80000000)
7640: 20 26 26 20 21 28 74 69 63 6b 20 26 20 30 78 38 && !(tick & 0x8
7650: 30 30 30 30 30 30 30 29 29 20 7b 0a 2b 09 20 20 0000000)) {.+.
7660: 20 20 54 69 63 6b 55 70 70 65 72 20 2b 3d 20 30 TickUpper += 0
7670: 78 31 30 30 30 30 30 30 30 30 55 4c 4c 3b 0a 2b x100000000ULL;.+
7680: 09 7d 0a 2b 09 4c 61 73 74 54 69 63 6b 20 3d 20 .}.+.LastTick =
7690: 74 69 63 6b 3b 0a 2b 09 6d 73 20 3d 20 54 69 63 tick;.+.ms = Tic
76a0: 6b 55 70 70 65 72 20 7c 20 4c 61 73 74 54 69 63 kUpper | LastTic
76b0: 6b 3b 0a 2b 09 4c 65 61 76 65 43 72 69 74 69 63 k;.+.LeaveCritic
76c0: 61 6c 53 65 63 74 69 6f 6e 28 26 54 69 63 6b 4d alSection(&TickM
76d0: 75 74 65 78 29 3b 0a 2b 20 20 20 20 7d 0a 2b 20 utex);.+ }.+
76e0: 20 20 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 20 timePtr->sec
76f0: 3d 20 28 6c 6f 6e 67 29 28 6d 73 2f 31 30 30 30 = (long)(ms/1000
7700: 29 3b 0a 2b 20 20 20 20 74 69 6d 65 50 74 72 2d );.+ timePtr-
7710: 3e 75 73 65 63 20 3d 20 28 28 6c 6f 6e 67 29 28 >usec = ((long)(
7720: 6d 73 25 31 30 30 30 29 29 2a 31 30 30 30 3b 0a ms%1000))*1000;.
7730: 2b 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0a 2b + return 1;.+
7740: 23 65 6c 73 65 0a 2b 20 20 20 20 54 63 6c 5f 47 #else.+ Tcl_G
7750: 65 74 54 69 6d 65 28 74 69 6d 65 50 74 72 29 3b etTime(timePtr);
7760: 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a .+ return 0;.
7770: 2b 23 65 6e 64 69 66 0a 2b 7d 0a 20 0c 0a 20 2f +#endif.+}. .. /
7780: 2a 0a 20 20 2a 20 4c 6f 63 61 6c 20 56 61 72 69 *. * Local Vari
7790: 61 62 6c 65 73 3a 0a 20 20 2a 20 6d 6f 64 65 3a ables:. * mode:
77a0: 20 63 0a 20 20 2a 20 63 2d 62 61 73 69 63 2d 6f c. * c-basic-o
77b0: 66 66 73 65 74 3a 20 34 0a 20 20 2a 20 66 69 6c ffset: 4. * fil
77c0: 6c 2d 63 6f 6c 75 6d 6e 3a 20 37 38 0a 20 20 2a l-column: 78. *
77d0: 20 45 6e 64 3a 0a 20 20 2a 2f 0a 0a 49 6e 64 65 End:. */..Inde
77e0: 78 3a 20 77 69 6e 2f 74 63 6c 57 69 6e 4e 6f 74 x: win/tclWinNot
77f0: 69 66 79 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ify.c.==========
7800: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
7810: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
7820: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
7830: 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 77 69 6e ========.--- win
7840: 2f 74 63 6c 57 69 6e 4e 6f 74 69 66 79 2e 63 0a /tclWinNotify.c.
7850: 2b 2b 2b 20 77 69 6e 2f 74 63 6c 57 69 6e 4e 6f +++ win/tclWinNo
7860: 74 69 66 79 2e 63 0a 40 40 20 2d 34 34 33 2c 31 tify.c.@@ -443,1
7870: 30 20 2b 34 34 33 2c 31 36 20 40 40 0a 20 09 2f 0 +443,16 @@. ./
7880: 2a 0a 20 09 20 2a 20 43 6f 6d 70 75 74 65 20 74 *. . * Compute t
7890: 68 65 20 74 69 6d 65 6f 75 74 20 69 6e 20 6d 69 he timeout in mi
78a0: 6c 6c 69 73 65 63 6f 6e 64 73 2e 0a 20 09 20 2a lliseconds.. . *
78b0: 2f 0a 20 0a 20 09 69 66 20 28 74 69 6d 65 50 74 /. . .if (timePt
78c0: 72 29 20 7b 0a 2b 23 69 66 64 65 66 20 57 49 4e r) {.+#ifdef WIN
78d0: 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 32_USE_TICKCOUNT
78e0: 0a 2b 09 20 20 20 20 74 69 6d 65 6f 75 74 20 3d .+. timeout =
78f0: 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 20 2a 20 timePtr->sec *
7900: 31 30 30 30 20 2b 20 74 69 6d 65 50 74 72 2d 3e 1000 + timePtr->
7910: 75 73 65 63 20 2f 20 31 30 30 30 3b 0a 2b 09 20 usec / 1000;.+.
7920: 20 20 20 69 66 20 28 74 69 6d 65 6f 75 74 20 3d if (timeout =
7930: 3d 20 49 4e 46 49 4e 49 54 45 29 20 7b 0a 2b 09 = INFINITE) {.+.
7940: 09 74 69 6d 65 6f 75 74 2d 2d 3b 0a 2b 09 20 20 .timeout--;.+.
7950: 20 20 7d 20 0a 2b 23 65 6c 73 65 0a 20 09 20 20 } .+#else. .
7960: 20 20 2f 2a 0a 20 09 20 20 20 20 20 2a 20 54 49 /*. . * TI
7970: 50 20 23 32 33 33 20 28 56 69 72 74 75 61 6c 69 P #233 (Virtuali
7980: 7a 65 64 20 54 69 6d 65 29 2e 20 43 6f 6e 76 65 zed Time). Conve
7990: 72 74 20 76 69 72 74 75 61 6c 20 64 6f 6d 61 69 rt virtual domai
79a0: 6e 20 64 65 6c 61 79 20 74 6f 0a 20 09 20 20 20 n delay to. .
79b0: 20 20 2a 20 72 65 61 6c 2d 74 69 6d 65 2e 0a 20 * real-time..
79c0: 09 20 20 20 20 20 2a 2f 0a 20 0a 40 40 20 2d 34 . */. .@@ -4
79d0: 35 38 2c 31 30 20 2b 34 36 34 2c 31 31 20 40 40 58,10 +464,11 @@
79e0: 0a 20 09 20 20 20 20 69 66 20 28 6d 79 54 69 6d . . if (myTim
79f0: 65 2e 73 65 63 20 21 3d 20 30 20 7c 7c 20 6d 79 e.sec != 0 || my
7a00: 54 69 6d 65 2e 75 73 65 63 20 21 3d 20 30 29 20 Time.usec != 0)
7a10: 7b 0a 20 09 09 74 63 6c 53 63 61 6c 65 54 69 6d {. ..tclScaleTim
7a20: 65 50 72 6f 63 50 74 72 28 26 6d 79 54 69 6d 65 eProcPtr(&myTime
7a30: 2c 20 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 44 , tclTimeClientD
7a40: 61 74 61 29 3b 0a 20 09 20 20 20 20 7d 0a 20 0a ata);. . }. .
7a50: 20 09 20 20 20 20 74 69 6d 65 6f 75 74 20 3d 20 . timeout =
7a60: 6d 79 54 69 6d 65 2e 73 65 63 20 2a 20 31 30 30 myTime.sec * 100
7a70: 30 20 2b 20 6d 79 54 69 6d 65 2e 75 73 65 63 20 0 + myTime.usec
7a80: 2f 20 31 30 30 30 3b 0a 2b 23 65 6e 64 69 66 0a / 1000;.+#endif.
7a90: 20 09 7d 20 65 6c 73 65 20 7b 0a 20 09 20 20 20 .} else {. .
7aa0: 20 74 69 6d 65 6f 75 74 20 3d 20 49 4e 46 49 4e timeout = INFIN
7ab0: 49 54 45 3b 0a 20 09 7d 0a 20 0a 20 09 2f 2a 0a ITE;. .}. . ./*.
7ac0: 40 40 20 2d 35 36 35 2c 31 31 20 2b 35 37 32 2c @@ -565,11 +572,
7ad0: 31 31 20 40 40 0a 20 20 20 20 20 44 57 4f 52 44 11 @@. DWORD
7ae0: 20 73 6c 65 65 70 54 69 6d 65 3b 09 09 2f 2a 20 sleepTime;../*
7af0: 54 69 6d 65 20 74 6f 20 73 6c 65 65 70 2c 20 72 Time to sleep, r
7b00: 65 61 6c 2d 74 69 6d 65 20 2a 2f 0a 20 0a 20 20 eal-time */. .
7b10: 20 20 20 76 64 65 6c 61 79 2e 73 65 63 20 20 3d vdelay.sec =
7b20: 20 6d 73 20 2f 20 31 30 30 30 3b 0a 20 20 20 20 ms / 1000;.
7b30: 20 76 64 65 6c 61 79 2e 75 73 65 63 20 3d 20 28 vdelay.usec = (
7b40: 6d 73 20 25 20 31 30 30 30 29 20 2a 20 31 30 30 ms % 1000) * 100
7b50: 30 3b 0a 20 0a 2d 20 20 20 20 54 63 6c 5f 47 65 0;. .- Tcl_Ge
7b60: 74 54 69 6d 65 28 26 6e 6f 77 29 3b 0a 2b 20 20 tTime(&now);.+
7b70: 20 20 54 63 6c 70 47 65 74 4d 6f 6e 6f 74 6f 6e TclpGetMonoton
7b80: 69 63 54 69 6d 65 28 26 6e 6f 77 29 3b 0a 20 20 icTime(&now);.
7b90: 20 20 20 64 65 73 69 72 65 64 2e 73 65 63 20 20 desired.sec
7ba0: 3d 20 6e 6f 77 2e 73 65 63 20 20 2b 20 76 64 65 = now.sec + vde
7bb0: 6c 61 79 2e 73 65 63 3b 0a 20 20 20 20 20 64 65 lay.sec;. de
7bc0: 73 69 72 65 64 2e 75 73 65 63 20 3d 20 6e 6f 77 sired.usec = now
7bd0: 2e 75 73 65 63 20 2b 20 76 64 65 6c 61 79 2e 75 .usec + vdelay.u
7be0: 73 65 63 3b 0a 20 20 20 20 20 69 66 20 28 64 65 sec;. if (de
7bf0: 73 69 72 65 64 2e 75 73 65 63 20 3e 20 31 30 30 sired.usec > 100
7c00: 30 30 30 30 29 20 7b 0a 20 09 2b 2b 64 65 73 69 0000) {. .++desi
7c10: 72 65 64 2e 73 65 63 3b 0a 20 09 64 65 73 69 72 red.sec;. .desir
7c20: 65 64 2e 75 73 65 63 20 2d 3d 20 31 30 30 30 30 ed.usec -= 10000
7c30: 30 30 3b 0a 40 40 20 2d 35 37 39 2c 31 34 20 2b 00;.@@ -579,14 +
7c40: 35 38 36 2c 31 37 20 40 40 0a 20 20 20 20 20 20 586,17 @@.
7c50: 2a 20 54 49 50 20 23 32 33 33 3a 20 53 63 61 6c * TIP #233: Scal
7c60: 65 20 64 65 6c 61 79 20 66 72 6f 6d 20 76 69 72 e delay from vir
7c70: 74 75 61 6c 20 74 6f 20 72 65 61 6c 2d 74 69 6d tual to real-tim
7c80: 65 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20 20 e.. */. .
7c90: 20 20 20 74 63 6c 53 63 61 6c 65 54 69 6d 65 50 tclScaleTimeP
7ca0: 72 6f 63 50 74 72 28 26 76 64 65 6c 61 79 2c 20 rocPtr(&vdelay,
7cb0: 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 44 61 74 tclTimeClientDat
7cc0: 61 29 3b 0a 20 20 20 20 20 73 6c 65 65 70 54 69 a);. sleepTi
7cd0: 6d 65 20 3d 20 76 64 65 6c 61 79 2e 73 65 63 20 me = vdelay.sec
7ce0: 2a 20 31 30 30 30 20 2b 20 76 64 65 6c 61 79 2e * 1000 + vdelay.
7cf0: 75 73 65 63 20 2f 20 31 30 30 30 3b 0a 2b 20 20 usec / 1000;.+
7d00: 20 20 69 66 20 28 73 6c 65 65 70 54 69 6d 65 20 if (sleepTime
7d10: 3d 3d 20 49 4e 46 49 4e 49 54 45 29 20 7b 0a 2b == INFINITE) {.+
7d20: 09 2d 2d 73 6c 65 65 70 54 69 6d 65 3b 0a 2b 20 .--sleepTime;.+
7d30: 20 20 20 7d 0a 20 0a 20 20 20 20 20 66 6f 72 20 }. . for
7d40: 28 3b 3b 29 20 7b 0a 20 09 53 6c 65 65 70 45 78 (;;) {. .SleepEx
7d50: 28 73 6c 65 65 70 54 69 6d 65 2c 20 54 52 55 45 (sleepTime, TRUE
7d60: 29 3b 0a 2d 09 54 63 6c 5f 47 65 74 54 69 6d 65 );.-.Tcl_GetTime
7d70: 28 26 6e 6f 77 29 3b 0a 2b 09 54 63 6c 70 47 65 (&now);.+.TclpGe
7d80: 74 4d 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 28 26 tMonotonicTime(&
7d90: 6e 6f 77 29 3b 0a 20 09 69 66 20 28 6e 6f 77 2e now);. .if (now.
7da0: 73 65 63 20 3e 20 64 65 73 69 72 65 64 2e 73 65 sec > desired.se
7db0: 63 29 20 7b 0a 20 09 20 20 20 20 62 72 65 61 6b c) {. . break
7dc0: 3b 0a 20 09 7d 20 65 6c 73 65 20 69 66 20 28 28 ;. .} else if ((
7dd0: 6e 6f 77 2e 73 65 63 20 3d 3d 20 64 65 73 69 72 now.sec == desir
7de0: 65 64 2e 73 65 63 29 20 26 26 20 28 6e 6f 77 2e ed.sec) && (now.
7df0: 75 73 65 63 20 3e 3d 20 64 65 73 69 72 65 64 2e usec >= desired.
7e00: 75 73 65 63 29 29 20 7b 0a 20 09 20 20 20 20 62 usec)) {. . b
7e10: 72 65 61 6b 3b 0a 20 09 7d 0a 40 40 20 2d 35 39 reak;. .}.@@ -59
7e20: 34 2c 31 30 20 2b 36 30 34 2c 31 33 20 40 40 0a 4,10 +604,13 @@.
7e30: 20 09 76 64 65 6c 61 79 2e 73 65 63 20 20 3d 20 .vdelay.sec =
7e40: 64 65 73 69 72 65 64 2e 73 65 63 20 20 2d 20 6e desired.sec - n
7e50: 6f 77 2e 73 65 63 3b 0a 20 09 76 64 65 6c 61 79 ow.sec;. .vdelay
7e60: 2e 75 73 65 63 20 3d 20 64 65 73 69 72 65 64 2e .usec = desired.
7e70: 75 73 65 63 20 2d 20 6e 6f 77 2e 75 73 65 63 3b usec - now.usec;
7e80: 0a 20 0a 20 09 74 63 6c 53 63 61 6c 65 54 69 6d . . .tclScaleTim
7e90: 65 50 72 6f 63 50 74 72 28 26 76 64 65 6c 61 79 eProcPtr(&vdelay
7ea0: 2c 20 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 44 , tclTimeClientD
7eb0: 61 74 61 29 3b 0a 20 09 73 6c 65 65 70 54 69 6d ata);. .sleepTim
7ec0: 65 20 3d 20 76 64 65 6c 61 79 2e 73 65 63 20 2a e = vdelay.sec *
7ed0: 20 31 30 30 30 20 2b 20 76 64 65 6c 61 79 2e 75 1000 + vdelay.u
7ee0: 73 65 63 20 2f 20 31 30 30 30 3b 0a 2b 09 69 66 sec / 1000;.+.if
7ef0: 20 28 73 6c 65 65 70 54 69 6d 65 20 3d 3d 20 49 (sleepTime == I
7f00: 4e 46 49 4e 49 54 45 29 20 7b 0a 2b 09 20 20 20 NFINITE) {.+.
7f10: 20 2d 2d 73 6c 65 65 70 54 69 6d 65 3b 0a 2b 09 --sleepTime;.+.
7f20: 7d 0a 20 20 20 20 20 7d 0a 20 7d 0a 20 0c 0a 20 }. }. }. ..
7f30: 2f 2a 0a 20 20 2a 20 4c 6f 63 61 6c 20 56 61 72 /*. * Local Var
7f40: 69 61 62 6c 65 73 3a 0a 0a 49 6e 64 65 78 3a 20 iables:..Index:
7f50: 77 69 6e 2f 74 63 6c 57 69 6e 54 69 6d 65 2e 63 win/tclWinTime.c
7f60: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
7f70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
7f80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
7f90: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
7fa0: 3d 3d 3d 0a 2d 2d 2d 20 77 69 6e 2f 74 63 6c 57 ===.--- win/tclW
7fb0: 69 6e 54 69 6d 65 2e 63 0a 2b 2b 2b 20 77 69 6e inTime.c.+++ win
7fc0: 2f 74 63 6c 57 69 6e 54 69 6d 65 2e 63 0a 40 40 /tclWinTime.c.@@
7fd0: 20 2d 31 31 31 36 2c 31 33 20 2b 31 31 31 36 2c -1116,13 +1116,
7fe0: 31 35 20 40 40 0a 20 54 63 6c 5f 53 65 74 54 69 15 @@. Tcl_SetTi
7ff0: 6d 65 50 72 6f 63 28 0a 20 20 20 20 20 54 63 6c meProc(. Tcl
8000: 5f 47 65 74 54 69 6d 65 50 72 6f 63 20 2a 67 65 _GetTimeProc *ge
8010: 74 50 72 6f 63 2c 0a 20 20 20 20 20 54 63 6c 5f tProc,. Tcl_
8020: 53 63 61 6c 65 54 69 6d 65 50 72 6f 63 20 2a 73 ScaleTimeProc *s
8030: 63 61 6c 65 50 72 6f 63 2c 0a 20 20 20 20 20 43 caleProc,. C
8040: 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 lientData client
8050: 44 61 74 61 29 0a 20 7b 0a 2b 23 69 66 6e 64 65 Data). {.+#ifnde
8060: 66 20 57 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b f WIN32_USE_TICK
8070: 43 4f 55 4e 54 0a 20 20 20 20 20 74 63 6c 47 65 COUNT. tclGe
8080: 74 54 69 6d 65 50 72 6f 63 50 74 72 20 3d 20 67 tTimeProcPtr = g
8090: 65 74 50 72 6f 63 3b 0a 20 20 20 20 20 74 63 6c etProc;. tcl
80a0: 53 63 61 6c 65 54 69 6d 65 50 72 6f 63 50 74 72 ScaleTimeProcPtr
80b0: 20 3d 20 73 63 61 6c 65 50 72 6f 63 3b 0a 20 20 = scaleProc;.
80c0: 20 20 20 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 tclTimeClient
80d0: 44 61 74 61 20 3d 20 63 6c 69 65 6e 74 44 61 74 Data = clientDat
80e0: 61 3b 0a 2b 23 65 6e 64 69 66 0a 20 7d 0a 20 0c a;.+#endif. }. .
80f0: 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d . /*. *--------
8100: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8110: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 --------------.
8140: 20 2a 0a 0a *..