Attachment "tip302.diff" to
ticket [3328635fff]
added by
chw
2016-09-24 17:53:13.
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 36 31 2c 31 36 20 2b 31 37 36 @@ -1761,16 +176
3980: 31 2c 32 30 20 40 40 0a 20 09 09 09 09 20 2a 20 1,20 @@. .... *
3990: 74 68 65 20 63 6f 6e 64 69 74 69 6f 6e 73 20 69 the conditions i
39a0: 6e 20 6d 61 73 6b 20 74 6f 20 6f 63 63 75 72 2c n mask to occur,
39b0: 20 69 6e 0a 20 09 09 09 09 20 2a 20 6d 69 6c 6c in. .... * mill
39c0: 69 73 65 63 6f 6e 64 73 2e 20 41 20 76 61 6c 75 iseconds. A valu
39d0: 65 20 6f 66 20 30 20 6d 65 61 6e 73 20 64 6f 6e e of 0 means don
39e0: 27 74 20 77 61 69 74 0a 20 09 09 09 09 20 2a 20 't wait. .... *
39f0: 61 74 20 61 6c 6c 2c 20 61 6e 64 20 61 20 76 61 at all, and a va
3a00: 6c 75 65 20 6f 66 20 2d 31 20 6d 65 61 6e 73 20 lue of -1 means
3a10: 77 61 69 74 0a 20 09 09 09 09 20 2a 20 66 6f 72 wait. .... * for
3a20: 65 76 65 72 2e 20 2a 2f 0a 20 7b 0a 2d 20 20 20 ever. */. {.-
3a30: 20 54 63 6c 5f 54 69 6d 65 20 61 62 6f 72 74 54 Tcl_Time abortT
3a40: 69 6d 65 20 3d 20 7b 30 2c 20 30 7d 2c 20 6e 6f ime = {0, 0}, no
3a50: 77 3b 20 2f 2a 20 73 69 6c 65 6e 63 65 20 67 63 w; /* silence gc
3a60: 63 20 34 20 77 61 72 6e 69 6e 67 20 2a 2f 0a 2b c 4 warning */.+
3a70: 20 20 20 20 54 63 6c 5f 54 69 6d 65 20 61 62 6f Tcl_Time abo
3a80: 72 74 54 69 6d 65 20 3d 20 7b 30 2c 20 30 7d 2c rtTime = {0, 0},
3a90: 20 6e 6f 77 20 3d 20 7b 20 30 2c 20 30 20 7d 3b now = { 0, 0 };
3aa0: 20 2f 2a 20 73 69 6c 65 6e 63 65 20 67 63 63 20 /* silence gcc
3ab0: 34 20 77 61 72 6e 69 6e 67 20 2a 2f 0a 20 20 20 4 warning */.
3ac0: 20 20 73 74 72 75 63 74 20 74 69 6d 65 76 61 6c struct timeval
3ad0: 20 62 6c 6f 63 6b 54 69 6d 65 2c 20 2a 74 69 6d blockTime, *tim
3ae0: 65 6f 75 74 50 74 72 3b 0a 20 20 20 20 20 69 6e eoutPtr;. in
3af0: 74 20 6e 75 6d 46 6f 75 6e 64 2c 20 72 65 73 75 t numFound, resu
3b00: 6c 74 20 3d 20 30 3b 0a 20 20 20 20 20 66 64 5f lt = 0;. fd_
3b10: 73 65 74 20 72 65 61 64 61 62 6c 65 4d 61 73 6b set readableMask
3b20: 3b 0a 20 20 20 20 20 66 64 5f 73 65 74 20 77 72 ;. fd_set wr
3b30: 69 74 61 62 6c 65 4d 61 73 6b 3b 0a 20 20 20 20 itableMask;.
3b40: 20 66 64 5f 73 65 74 20 65 78 63 65 70 74 69 6f fd_set exceptio
3b50: 6e 4d 61 73 6b 3b 0a 2b 23 69 66 64 65 66 20 48 nMask;.+#ifdef H
3b60: 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d AVE_CLOCK_GETTIM
3b70: 45 0a 2b 20 20 20 20 73 74 72 75 63 74 20 74 69 E.+ struct ti
3b80: 6d 65 73 70 65 63 20 74 73 3b 0a 2b 20 20 20 20 mespec ts;.+
3b90: 69 6e 74 20 6e 6f 4d 6f 6e 6f 54 69 6d 65 20 3d int noMonoTime =
3ba0: 20 30 3b 0a 2b 23 65 6e 64 69 66 0a 20 0a 20 23 0;.+#endif. . #
3bb0: 69 66 6e 64 65 66 20 5f 44 41 52 57 49 4e 5f 43 ifndef _DARWIN_C
3bc0: 5f 53 4f 55 52 43 45 0a 20 20 20 20 20 2f 2a 0a _SOURCE. /*.
3bd0: 20 20 20 20 20 20 2a 20 53 61 6e 69 74 79 20 63 * Sanity c
3be0: 68 65 63 6b 20 66 64 2e 0a 20 20 20 20 20 20 2a heck fd.. *
3bf0: 2f 0a 40 40 20 2d 31 37 38 35 2c 31 31 20 2b 31 /.@@ -1785,11 +1
3c00: 37 38 39 2c 32 30 20 40 40 0a 20 20 20 20 20 20 789,20 @@.
3c10: 2a 20 49 66 20 74 68 65 72 65 20 69 73 20 61 20 * If there is a
3c20: 6e 6f 6e 2d 7a 65 72 6f 20 66 69 6e 69 74 65 20 non-zero finite
3c30: 74 69 6d 65 6f 75 74 2c 20 63 6f 6d 70 75 74 65 timeout, compute
3c40: 20 74 68 65 20 74 69 6d 65 20 77 68 65 6e 20 77 the time when w
3c50: 65 20 67 69 76 65 0a 20 20 20 20 20 20 2a 20 75 e give. * u
3c60: 70 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20 20 p.. */. .
3c70: 20 20 20 69 66 20 28 74 69 6d 65 6f 75 74 20 3e if (timeout >
3c80: 20 30 29 20 7b 0a 2b 23 69 66 64 65 66 20 48 41 0) {.+#ifdef HA
3c90: 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 VE_CLOCK_GETTIME
3ca0: 0a 2b 09 69 66 20 28 63 6c 6f 63 6b 5f 67 65 74 .+.if (clock_get
3cb0: 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 time(CLOCK_MONOT
3cc0: 4f 4e 49 43 2c 20 26 74 73 29 20 3c 20 30 29 20 ONIC, &ts) < 0)
3cd0: 7b 0a 2b 09 20 20 20 20 6e 6f 4d 6f 6e 6f 54 69 {.+. noMonoTi
3ce0: 6d 65 20 3d 20 31 3b 0a 2b 09 20 20 20 20 63 6c me = 1;.+. cl
3cf0: 6f 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 ock_gettime(CLOC
3d00: 4b 5f 52 45 41 4c 54 49 4d 45 2c 20 26 74 73 29 K_REALTIME, &ts)
3d10: 3b 0a 2b 09 7d 0a 2b 09 6e 6f 77 2e 73 65 63 20 ;.+.}.+.now.sec
3d20: 3d 20 74 73 2e 74 76 5f 73 65 63 3b 0a 2b 09 6e = ts.tv_sec;.+.n
3d30: 6f 77 2e 75 73 65 63 20 3d 20 74 73 2e 74 76 5f ow.usec = ts.tv_
3d40: 6e 73 65 63 20 2f 20 31 30 30 30 3b 0a 2b 23 65 nsec / 1000;.+#e
3d50: 6c 73 65 0a 20 09 54 63 6c 5f 47 65 74 54 69 6d lse. .Tcl_GetTim
3d60: 65 28 26 6e 6f 77 29 3b 0a 2b 23 65 6e 64 69 66 e(&now);.+#endif
3d70: 0a 20 09 61 62 6f 72 74 54 69 6d 65 2e 73 65 63 . .abortTime.sec
3d80: 20 3d 20 6e 6f 77 2e 73 65 63 20 2b 20 74 69 6d = now.sec + tim
3d90: 65 6f 75 74 2f 31 30 30 30 3b 0a 20 09 61 62 6f eout/1000;. .abo
3da0: 72 74 54 69 6d 65 2e 75 73 65 63 20 3d 20 6e 6f rtTime.usec = no
3db0: 77 2e 75 73 65 63 20 2b 20 28 74 69 6d 65 6f 75 w.usec + (timeou
3dc0: 74 25 31 30 30 30 29 2a 31 30 30 30 3b 0a 20 09 t%1000)*1000;. .
3dd0: 69 66 20 28 61 62 6f 72 74 54 69 6d 65 2e 75 73 if (abortTime.us
3de0: 65 63 20 3e 3d 20 31 30 30 30 30 30 30 29 20 7b ec >= 1000000) {
3df0: 0a 20 09 20 20 20 20 61 62 6f 72 74 54 69 6d 65 . . abortTime
3e00: 2e 75 73 65 63 20 2d 3d 20 31 30 30 30 30 30 30 .usec -= 1000000
3e10: 3b 0a 20 09 20 20 20 20 61 62 6f 72 74 54 69 6d ;. . abortTim
3e20: 65 2e 73 65 63 20 2b 3d 20 31 3b 0a 40 40 20 2d e.sec += 1;.@@ -
3e30: 31 38 37 34 2c 31 31 20 2b 31 38 38 37 2c 32 30 1874,11 +1887,20
3e40: 20 40 40 0a 20 0a 20 09 2f 2a 0a 20 09 20 2a 20 @@. . ./*. . *
3e50: 54 68 65 20 73 65 6c 65 63 74 20 72 65 74 75 72 The select retur
3e60: 6e 65 64 20 65 61 72 6c 79 2c 20 73 6f 20 77 65 ned early, so we
3e70: 20 6e 65 65 64 20 74 6f 20 72 65 63 6f 6d 70 75 need to recompu
3e80: 74 65 20 74 68 65 20 74 69 6d 65 6f 75 74 2e 0a te the timeout..
3e90: 20 09 20 2a 2f 0a 20 0a 2b 23 69 66 64 65 66 20 . */. .+#ifdef
3ea0: 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 HAVE_CLOCK_GETTI
3eb0: 4d 45 0a 2b 09 69 66 20 28 6e 6f 4d 6f 6e 6f 54 ME.+.if (noMonoT
3ec0: 69 6d 65 20 7c 7c 20 28 63 6c 6f 63 6b 5f 67 65 ime || (clock_ge
3ed0: 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f ttime(CLOCK_MONO
3ee0: 54 4f 4e 49 43 2c 20 26 74 73 29 20 3c 20 30 29 TONIC, &ts) < 0)
3ef0: 29 20 7b 0a 2b 09 20 20 20 20 6e 6f 4d 6f 6e 6f ) {.+. noMono
3f00: 54 69 6d 65 20 3d 20 31 3b 0a 2b 09 20 20 20 20 Time = 1;.+.
3f10: 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c clock_gettime(CL
3f20: 4f 43 4b 5f 52 45 41 4c 54 49 4d 45 2c 20 26 74 OCK_REALTIME, &t
3f30: 73 29 3b 0a 2b 09 7d 0a 2b 09 6e 6f 77 2e 73 65 s);.+.}.+.now.se
3f40: 63 20 3d 20 74 73 2e 74 76 5f 73 65 63 3b 0a 2b c = ts.tv_sec;.+
3f50: 09 6e 6f 77 2e 75 73 65 63 20 3d 20 74 73 2e 74 .now.usec = ts.t
3f60: 76 5f 6e 73 65 63 20 2f 20 31 30 30 30 3b 0a 2b v_nsec / 1000;.+
3f70: 23 65 6c 73 65 0a 20 09 54 63 6c 5f 47 65 74 54 #else. .Tcl_GetT
3f80: 69 6d 65 28 26 6e 6f 77 29 3b 0a 2b 23 65 6e 64 ime(&now);.+#end
3f90: 69 66 0a 20 09 69 66 20 28 28 61 62 6f 72 74 54 if. .if ((abortT
3fa0: 69 6d 65 2e 73 65 63 20 3c 20 6e 6f 77 2e 73 65 ime.sec < now.se
3fb0: 63 29 0a 20 09 09 7c 7c 20 28 61 62 6f 72 74 54 c). ..|| (abortT
3fc0: 69 6d 65 2e 73 65 63 3d 3d 6e 6f 77 2e 73 65 63 ime.sec==now.sec
3fd0: 20 26 26 20 61 62 6f 72 74 54 69 6d 65 2e 75 73 && abortTime.us
3fe0: 65 63 3c 3d 6e 6f 77 2e 75 73 65 63 29 29 20 7b ec<=now.usec)) {
3ff0: 0a 20 09 20 20 20 20 62 72 65 61 6b 3b 0a 20 09 . . break;. .
4000: 7d 0a 20 20 20 20 20 7d 0a 0a 49 6e 64 65 78 3a }. }..Index:
4010: 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 45 76 65 unix/tclUnixEve
4020: 6e 74 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d nt.c.===========
4030: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4060: 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 78 =======.--- unix
4070: 2f 74 63 6c 55 6e 69 78 45 76 65 6e 74 2e 63 0a /tclUnixEvent.c.
4080: 2b 2b 2b 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 +++ unix/tclUnix
4090: 45 76 65 6e 74 2e 63 0a 40 40 20 2d 34 30 2c 31 Event.c.@@ -40,1
40a0: 31 20 2b 34 30 2c 32 33 20 40 40 0a 20 20 20 20 1 +40,23 @@.
40b0: 20 20 2a 20 54 68 65 20 6f 6e 6c 79 20 74 72 69 * The only tri
40c0: 63 6b 20 68 65 72 65 20 69 73 20 74 68 61 74 20 ck here is that
40d0: 73 65 6c 65 63 74 20 61 70 70 65 61 72 73 20 74 select appears t
40e0: 6f 20 72 65 74 75 72 6e 20 65 61 72 6c 79 20 75 o return early u
40f0: 6e 64 65 72 20 73 6f 6d 65 0a 20 20 20 20 20 20 nder some.
4100: 2a 20 63 6f 6e 64 69 74 69 6f 6e 73 2c 20 73 6f * conditions, so
4110: 20 77 65 20 68 61 76 65 20 74 6f 20 63 68 65 63 we have to chec
4120: 6b 20 74 6f 20 6d 61 6b 65 20 73 75 72 65 20 74 k to make sure t
4130: 68 61 74 20 74 68 65 20 72 69 67 68 74 20 61 6d hat the right am
4140: 6f 75 6e 74 20 6f 66 0a 20 20 20 20 20 20 2a 20 ount of. *
4150: 74 69 6d 65 20 72 65 61 6c 6c 79 20 68 61 73 20 time really has
4160: 65 6c 61 70 73 65 64 2e 20 20 49 66 20 69 74 27 elapsed. If it'
4170: 73 20 74 6f 6f 20 65 61 72 6c 79 2c 20 67 6f 20 s too early, go
4180: 62 61 63 6b 20 74 6f 20 73 6c 65 65 70 20 61 67 back to sleep ag
4190: 61 69 6e 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a ain.. */. .
41a0: 2b 23 69 66 64 65 66 20 48 41 56 45 5f 43 4c 4f +#ifdef HAVE_CLO
41b0: 43 4b 5f 47 45 54 54 49 4d 45 0a 2b 20 20 20 20 CK_GETTIME.+
41c0: 73 74 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 struct timespec
41d0: 74 73 3b 0a 2b 20 20 20 20 69 6e 74 20 6e 6f 4d ts;.+ int noM
41e0: 6f 6e 6f 54 69 6d 65 20 3d 20 30 3b 0a 2b 0a 2b onoTime = 0;.+.+
41f0: 20 20 20 20 69 66 20 28 63 6c 6f 63 6b 5f 67 65 if (clock_ge
4200: 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f ttime(CLOCK_MONO
4210: 54 4f 4e 49 43 2c 20 26 74 73 29 20 3c 20 30 29 TONIC, &ts) < 0)
4220: 20 7b 0a 2b 09 6e 6f 4d 6f 6e 6f 54 69 6d 65 20 {.+.noMonoTime
4230: 3d 20 31 3b 0a 2b 09 63 6c 6f 63 6b 5f 67 65 74 = 1;.+.clock_get
4240: 74 69 6d 65 28 43 4c 4f 43 4b 5f 52 45 41 4c 54 time(CLOCK_REALT
4250: 49 4d 45 2c 20 26 74 73 29 3b 0a 2b 20 20 20 20 IME, &ts);.+
4260: 7d 0a 2b 20 20 20 20 62 65 66 6f 72 65 2e 73 65 }.+ before.se
4270: 63 20 3d 20 74 73 2e 74 76 5f 73 65 63 3b 0a 2b c = ts.tv_sec;.+
4280: 20 20 20 20 62 65 66 6f 72 65 2e 75 73 65 63 20 before.usec
4290: 3d 20 74 73 2e 74 76 5f 6e 73 65 63 20 2f 20 31 = ts.tv_nsec / 1
42a0: 30 30 30 3b 0a 2b 23 65 6c 73 65 0a 20 20 20 20 000;.+#else.
42b0: 20 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 62 65 Tcl_GetTime(&be
42c0: 66 6f 72 65 29 3b 0a 2b 23 65 6e 64 69 66 0a 20 fore);.+#endif.
42d0: 20 20 20 20 61 66 74 65 72 20 3d 20 62 65 66 6f after = befo
42e0: 72 65 3b 0a 20 20 20 20 20 61 66 74 65 72 2e 73 re;. after.s
42f0: 65 63 20 2b 3d 20 6d 73 2f 31 30 30 30 3b 0a 20 ec += ms/1000;.
4300: 20 20 20 20 61 66 74 65 72 2e 75 73 65 63 20 2b after.usec +
4310: 3d 20 28 6d 73 25 31 30 30 30 29 2a 31 30 30 30 = (ms%1000)*1000
4320: 3b 0a 20 20 20 20 20 69 66 20 28 61 66 74 65 72 ;. if (after
4330: 2e 75 73 65 63 20 3e 20 31 30 30 30 30 30 30 29 .usec > 1000000)
4340: 20 7b 0a 20 09 61 66 74 65 72 2e 75 73 65 63 20 {. .after.usec
4350: 2d 3d 20 31 30 30 30 30 30 30 3b 0a 40 40 20 2d -= 1000000;.@@ -
4360: 37 39 2c 31 31 20 2b 39 31 2c 32 30 20 40 40 0a 79,11 +91,20 @@.
4370: 20 09 09 7c 7c 20 28 28 64 65 6c 61 79 2e 74 76 ..|| ((delay.tv
4380: 5f 75 73 65 63 20 3d 3d 20 30 29 20 26 26 20 28 _usec == 0) && (
4390: 64 65 6c 61 79 2e 74 76 5f 73 65 63 20 3d 3d 20 delay.tv_sec ==
43a0: 30 29 29 29 20 7b 0a 20 09 20 20 20 20 62 72 65 0))) {. . bre
43b0: 61 6b 3b 0a 20 09 7d 0a 20 09 28 76 6f 69 64 29 ak;. .}. .(void)
43c0: 20 73 65 6c 65 63 74 28 30 2c 20 28 53 45 4c 45 select(0, (SELE
43d0: 43 54 5f 4d 41 53 4b 20 2a 29 20 30 2c 20 28 53 CT_MASK *) 0, (S
43e0: 45 4c 45 43 54 5f 4d 41 53 4b 20 2a 29 20 30 2c ELECT_MASK *) 0,
43f0: 0a 20 09 09 28 53 45 4c 45 43 54 5f 4d 41 53 4b . ..(SELECT_MASK
4400: 20 2a 29 20 30 2c 20 26 64 65 6c 61 79 29 3b 0a *) 0, &delay);.
4410: 2b 23 69 66 64 65 66 20 48 41 56 45 5f 43 4c 4f +#ifdef HAVE_CLO
4420: 43 4b 5f 47 45 54 54 49 4d 45 0a 2b 09 69 66 20 CK_GETTIME.+.if
4430: 28 6e 6f 4d 6f 6e 6f 54 69 6d 65 20 7c 7c 20 63 (noMonoTime || c
4440: 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f lock_gettime(CLO
4450: 43 4b 5f 4d 4f 4e 4f 54 4f 4e 49 43 2c 20 26 74 CK_MONOTONIC, &t
4460: 73 29 20 3c 20 30 29 20 7b 0a 2b 09 20 20 20 20 s) < 0) {.+.
4470: 6e 6f 4d 6f 6e 6f 54 69 6d 65 20 3d 20 31 3b 0a noMonoTime = 1;.
4480: 2b 09 20 20 20 20 63 6c 6f 63 6b 5f 67 65 74 74 +. clock_gett
4490: 69 6d 65 28 43 4c 4f 43 4b 5f 52 45 41 4c 54 49 ime(CLOCK_REALTI
44a0: 4d 45 2c 20 26 74 73 29 3b 0a 2b 09 7d 0a 2b 09 ME, &ts);.+.}.+.
44b0: 62 65 66 6f 72 65 2e 73 65 63 20 3d 20 74 73 2e before.sec = ts.
44c0: 74 76 5f 73 65 63 3b 0a 2b 09 62 65 66 6f 72 65 tv_sec;.+.before
44d0: 2e 75 73 65 63 20 3d 20 74 73 2e 74 76 5f 6e 73 .usec = ts.tv_ns
44e0: 65 63 20 2f 20 31 30 30 30 3b 0a 2b 23 65 6c 73 ec / 1000;.+#els
44f0: 65 0a 20 09 54 63 6c 5f 47 65 74 54 69 6d 65 28 e. .Tcl_GetTime(
4500: 26 62 65 66 6f 72 65 29 3b 0a 2b 23 65 6e 64 69 &before);.+#endi
4510: 66 0a 20 20 20 20 20 7d 0a 20 7d 0a 20 0c 0a 20 f. }. }. ..
4520: 23 65 6e 64 69 66 20 2f 2a 20 48 41 56 45 5f 43 #endif /* HAVE_C
4530: 4f 52 45 46 4f 55 4e 44 41 54 49 4f 4e 20 2a 2f OREFOUNDATION */
4540: 0a 20 2f 2a 0a 0a 49 6e 64 65 78 3a 20 75 6e 69 . /*..Index: uni
4550: 78 2f 74 63 6c 55 6e 69 78 4e 6f 74 66 79 2e 63 x/tclUnixNotfy.c
4560: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
4570: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4580: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
4590: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
45a0: 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 78 2f 74 63 6c ===.--- unix/tcl
45b0: 55 6e 69 78 4e 6f 74 66 79 2e 63 0a 2b 2b 2b 20 UnixNotfy.c.+++
45c0: 75 6e 69 78 2f 74 63 6c 55 6e 69 78 4e 6f 74 66 unix/tclUnixNotf
45d0: 79 2e 63 0a 40 40 20 2d 31 30 30 2c 31 30 20 2b y.c.@@ -100,10 +
45e0: 31 30 30 2c 31 33 20 40 40 0a 20 20 20 20 20 76 100,13 @@. v
45f0: 6f 69 64 20 2a 68 77 6e 64 3b 09 09 09 2f 2a 20 oid *hwnd;.../*
4600: 4d 65 73 73 61 67 69 6e 67 20 77 69 6e 64 6f 77 Messaging window
4610: 2e 20 2a 2f 0a 20 23 65 6c 73 65 20 2f 2a 20 21 . */. #else /* !
4620: 5f 5f 43 59 47 57 49 4e 5f 5f 20 2a 2f 0a 20 20 __CYGWIN__ */.
4630: 20 20 20 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f pthread_cond_
4640: 74 20 77 61 69 74 43 56 3b 09 2f 2a 20 41 6e 79 t waitCV;./* Any
4650: 20 6f 74 68 65 72 20 74 68 72 65 61 64 20 61 6c other thread al
4660: 65 72 74 73 20 61 20 6e 6f 74 69 66 69 65 72 20 erts a notifier
4670: 74 68 61 74 20 61 6e 0a 20 09 09 09 09 20 2a 20 that an. .... *
4680: 65 76 65 6e 74 20 69 73 20 72 65 61 64 79 20 74 event is ready t
4690: 6f 20 62 65 20 70 72 6f 63 65 73 73 65 64 20 62 o be processed b
46a0: 79 20 73 69 67 6e 61 6c 69 6e 67 0a 20 09 09 09 y signaling. ...
46b0: 09 20 2a 20 74 68 69 73 20 63 6f 6e 64 69 74 69 . * this conditi
46c0: 6f 6e 20 76 61 72 69 61 62 6c 65 2e 20 2a 2f 0a on variable. */.
46d0: 2b 23 69 66 20 64 65 66 69 6e 65 64 28 48 41 56 +#if defined(HAV
46e0: 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 29 E_CLOCK_GETTIME)
46f0: 20 26 26 20 64 65 66 69 6e 65 64 28 48 41 56 45 && defined(HAVE
4700: 5f 50 54 48 52 45 41 44 5f 43 4f 4e 44 41 54 54 _PTHREAD_CONDATT
4710: 52 5f 53 45 54 43 4c 4f 43 4b 29 0a 2b 20 20 20 R_SETCLOCK).+
4720: 20 69 6e 74 20 75 73 65 4d 6f 6e 6f 54 69 6d 65 int useMonoTime
4730: 3b 09 09 2f 2a 20 57 68 65 6e 20 74 72 75 65 20 ;../* When true
4740: 75 73 65 20 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f use CLOCK_MONOTO
4750: 4e 49 43 20 2a 2f 0a 2b 23 65 6e 64 69 66 0a 20 NIC */.+#endif.
4760: 23 65 6e 64 69 66 20 2f 2a 20 5f 5f 43 59 47 57 #endif /* __CYGW
4770: 49 4e 5f 5f 20 2a 2f 0a 20 20 20 20 20 69 6e 74 IN__ */. int
4780: 20 77 61 69 74 43 56 69 6e 69 74 69 61 6c 69 7a waitCVinitializ
4790: 65 64 3b 09 2f 2a 20 56 61 72 69 61 62 6c 65 20 ed;./* Variable
47a0: 74 6f 20 66 6c 61 67 20 69 6e 69 74 69 61 6c 69 to flag initiali
47b0: 7a 61 74 69 6f 6e 20 6f 66 20 74 68 65 20 73 74 zation of the st
47c0: 72 75 63 74 75 72 65 20 2a 2f 0a 20 20 20 20 20 ructure */.
47d0: 69 6e 74 20 65 76 65 6e 74 52 65 61 64 79 3b 09 int eventReady;.
47e0: 09 2f 2a 20 54 72 75 65 20 69 66 20 61 6e 20 65 ./* True if an e
47f0: 76 65 6e 74 20 69 73 20 72 65 61 64 79 20 74 6f vent is ready to
4800: 20 62 65 20 70 72 6f 63 65 73 73 65 64 2e 0a 20 be processed..
4810: 09 09 09 09 20 2a 20 55 73 65 64 20 61 73 20 63 .... * Used as c
4820: 6f 6e 64 69 74 69 6f 6e 20 66 6c 61 67 20 74 6f ondition flag to
4830: 67 65 74 68 65 72 20 77 69 74 68 20 77 61 69 74 gether with wait
4840: 43 56 0a 20 09 09 09 09 20 2a 20 61 62 6f 76 65 CV. .... * above
4850: 2e 20 2a 2f 0a 40 40 20 2d 33 35 34 2c 31 32 20 . */.@@ -354,12
4860: 2b 33 35 37 2c 32 39 20 40 40 0a 20 09 20 20 20 +357,29 @@. .
4870: 20 74 73 64 50 74 72 2d 3e 68 77 6e 64 20 3d 20 tsdPtr->hwnd =
4880: 43 72 65 61 74 65 57 69 6e 64 6f 77 45 78 57 28 CreateWindowExW(
4890: 4e 55 4c 4c 2c 20 63 6c 61 73 73 2e 6c 70 73 7a NULL, class.lpsz
48a0: 43 6c 61 73 73 4e 61 6d 65 2c 0a 20 09 09 20 20 ClassName,. ..
48b0: 20 20 63 6c 61 73 73 2e 6c 70 73 7a 43 6c 61 73 class.lpszClas
48c0: 73 4e 61 6d 65 2c 20 30 2c 20 30 2c 20 30 2c 20 sName, 0, 0, 0,
48d0: 30 2c 20 30 2c 20 4e 55 4c 4c 2c 20 4e 55 4c 4c 0, 0, NULL, NULL
48e0: 2c 0a 20 09 09 20 20 20 20 54 63 6c 57 69 6e 47 ,. .. TclWinG
48f0: 65 74 54 63 6c 49 6e 73 74 61 6e 63 65 28 29 2c etTclInstance(),
4900: 20 4e 55 4c 4c 29 3b 0a 20 09 20 20 20 20 74 73 NULL);. . ts
4910: 64 50 74 72 2d 3e 65 76 65 6e 74 20 3d 20 43 72 dPtr->event = Cr
4920: 65 61 74 65 45 76 65 6e 74 57 28 4e 55 4c 4c 2c eateEventW(NULL,
4930: 20 31 20 2f 2a 20 6d 61 6e 75 61 6c 20 2a 2f 2c 1 /* manual */,
4940: 0a 20 09 09 20 20 20 20 30 20 2f 2a 20 21 73 69 . .. 0 /* !si
4950: 67 6e 61 6c 65 64 20 2a 2f 2c 20 4e 55 4c 4c 29 gnaled */, NULL)
4960: 3b 0a 2b 23 65 6c 73 65 0a 2b 23 69 66 20 64 65 ;.+#else.+#if de
4970: 66 69 6e 65 64 28 48 41 56 45 5f 43 4c 4f 43 4b fined(HAVE_CLOCK
4980: 5f 47 45 54 54 49 4d 45 29 20 26 26 20 64 65 66 _GETTIME) && def
4990: 69 6e 65 64 28 48 41 56 45 5f 50 54 48 52 45 41 ined(HAVE_PTHREA
49a0: 44 5f 43 4f 4e 44 41 54 54 52 5f 53 45 54 43 4c D_CONDATTR_SETCL
49b0: 4f 43 4b 29 0a 2b 09 20 20 20 20 70 74 68 72 65 OCK).+. pthre
49c0: 61 64 5f 63 6f 6e 64 61 74 74 72 5f 74 20 61 74 ad_condattr_t at
49d0: 74 72 3b 0a 2b 0a 2b 09 20 20 20 20 70 74 68 72 tr;.+.+. pthr
49e0: 65 61 64 5f 63 6f 6e 64 61 74 74 72 5f 69 6e 69 ead_condattr_ini
49f0: 74 28 26 61 74 74 72 29 3b 0a 2b 09 20 20 20 20 t(&attr);.+.
4a00: 74 73 64 50 74 72 2d 3e 75 73 65 4d 6f 6e 6f 54 tsdPtr->useMonoT
4a10: 69 6d 65 20 3d 0a 2b 09 09 20 20 20 20 70 74 68 ime =.+.. pth
4a20: 72 65 61 64 5f 63 6f 6e 64 61 74 74 72 5f 73 65 read_condattr_se
4a30: 74 63 6c 6f 63 6b 28 26 61 74 74 72 2c 20 43 4c tclock(&attr, CL
4a40: 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e 49 43 29 20 3d OCK_MONOTONIC) =
4a50: 3d 20 30 3b 0a 2b 09 20 20 20 20 69 66 20 28 74 = 0;.+. if (t
4a60: 73 64 50 74 72 2d 3e 75 73 65 4d 6f 6e 6f 54 69 sdPtr->useMonoTi
4a70: 6d 65 29 20 7b 0a 2b 09 09 69 66 20 28 70 74 68 me) {.+..if (pth
4a80: 72 65 61 64 5f 63 6f 6e 64 5f 69 6e 69 74 28 26 read_cond_init(&
4a90: 74 73 64 50 74 72 2d 3e 77 61 69 74 43 56 2c 20 tsdPtr->waitCV,
4aa0: 26 61 74 74 72 29 29 20 7b 0a 2b 09 09 20 20 20 &attr)) {.+..
4ab0: 20 74 73 64 50 74 72 2d 3e 75 73 65 4d 6f 6e 6f tsdPtr->useMono
4ac0: 54 69 6d 65 20 3d 20 30 3b 0a 2b 09 09 20 20 20 Time = 0;.+..
4ad0: 20 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f 69 6e pthread_cond_in
4ae0: 69 74 28 26 74 73 64 50 74 72 2d 3e 77 61 69 74 it(&tsdPtr->wait
4af0: 43 56 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 09 7d 0a CV, NULL);.+..}.
4b00: 2b 09 20 20 20 20 7d 20 65 6c 73 65 20 7b 0a 2b +. } else {.+
4b10: 09 09 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f 69 ..pthread_cond_i
4b20: 6e 69 74 28 26 74 73 64 50 74 72 2d 3e 77 61 69 nit(&tsdPtr->wai
4b30: 74 43 56 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 20 20 tCV, NULL);.+.
4b40: 20 20 7d 0a 2b 09 20 20 20 20 70 74 68 72 65 61 }.+. pthrea
4b50: 64 5f 63 6f 6e 64 61 74 74 72 5f 64 65 73 74 72 d_condattr_destr
4b60: 6f 79 28 26 61 74 74 72 29 3b 0a 20 23 65 6c 73 oy(&attr);. #els
4b70: 65 0a 20 09 20 20 20 20 70 74 68 72 65 61 64 5f e. . pthread_
4b80: 63 6f 6e 64 5f 69 6e 69 74 28 26 74 73 64 50 74 cond_init(&tsdPt
4b90: 72 2d 3e 77 61 69 74 43 56 2c 20 4e 55 4c 4c 29 r->waitCV, NULL)
4ba0: 3b 0a 2b 23 65 6e 64 69 66 0a 20 23 65 6e 64 69 ;.+#endif. #endi
4bb0: 66 20 2f 2a 20 5f 5f 43 59 47 57 49 4e 5f 5f 20 f /* __CYGWIN__
4bc0: 2a 2f 0a 20 09 20 20 20 20 74 73 64 50 74 72 2d */. . tsdPtr-
4bd0: 3e 77 61 69 74 43 56 69 6e 69 74 69 61 6c 69 7a >waitCVinitializ
4be0: 65 64 20 3d 20 31 3b 0a 20 09 7d 0a 20 0a 20 09 ed = 1;. .}. . .
4bf0: 70 74 68 72 65 61 64 5f 6d 75 74 65 78 5f 6c 6f pthread_mutex_lo
4c00: 63 6b 28 26 6e 6f 74 69 66 69 65 72 49 6e 69 74 ck(¬ifierInit
4c10: 4d 75 74 65 78 29 3b 0a 40 40 20 2d 39 39 37 2c Mutex);.@@ -997,
4c20: 32 30 20 2b 31 30 31 37 2c 33 33 20 40 40 0a 20 20 +1017,33 @@.
4c30: 09 09 4d 73 67 57 61 69 74 46 6f 72 4d 75 6c 74 ..MsgWaitForMult
4c40: 69 70 6c 65 4f 62 6a 65 63 74 73 28 31 2c 20 26 ipleObjects(1, &
4c50: 74 73 64 50 74 72 2d 3e 65 76 65 6e 74 2c 20 30 tsdPtr->event, 0
4c60: 2c 20 74 69 6d 65 6f 75 74 2c 20 31 32 37 39 29 , timeout, 1279)
4c70: 3b 0a 20 09 09 70 74 68 72 65 61 64 5f 6d 75 74 ;. ..pthread_mut
4c80: 65 78 5f 6c 6f 63 6b 28 26 6e 6f 74 69 66 69 65 ex_lock(¬ifie
4c90: 72 4d 75 74 65 78 29 3b 0a 20 09 20 20 20 20 7d rMutex);. . }
4ca0: 0a 20 23 65 6c 73 65 0a 20 09 20 20 20 20 69 66 . #else. . if
4cb0: 20 28 74 69 6d 65 50 74 72 20 21 3d 20 4e 55 4c (timePtr != NUL
4cc0: 4c 29 20 7b 0a 2d 09 20 20 20 20 20 20 20 54 63 L) {.-. Tc
4cd0: 6c 5f 54 69 6d 65 20 6e 6f 77 3b 0a 2d 09 20 20 l_Time now;.-.
4ce0: 20 20 20 20 20 73 74 72 75 63 74 20 74 69 6d 65 struct time
4cf0: 73 70 65 63 20 70 74 69 6d 65 3b 0a 2b 09 09 73 spec ptime;.+..s
4d00: 74 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 70 truct timespec p
4d10: 74 69 6d 65 3b 0a 20 0a 2d 09 20 20 20 20 20 20 time;. .-.
4d20: 20 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 6e 6f Tcl_GetTime(&no
4d30: 77 29 3b 0a 2d 09 20 20 20 20 20 20 20 70 74 69 w);.-. pti
4d40: 6d 65 2e 74 76 5f 73 65 63 20 3d 20 74 69 6d 65 me.tv_sec = time
4d50: 50 74 72 2d 3e 73 65 63 20 2b 20 6e 6f 77 2e 73 Ptr->sec + now.s
4d60: 65 63 20 2b 20 28 74 69 6d 65 50 74 72 2d 3e 75 ec + (timePtr->u
4d70: 73 65 63 20 2b 20 6e 6f 77 2e 75 73 65 63 29 20 sec + now.usec)
4d80: 2f 20 31 30 30 30 30 30 30 3b 0a 2d 09 20 20 20 / 1000000;.-.
4d90: 20 20 20 20 70 74 69 6d 65 2e 74 76 5f 6e 73 65 ptime.tv_nse
4da0: 63 20 3d 20 31 30 30 30 20 2a 20 28 28 74 69 6d c = 1000 * ((tim
4db0: 65 50 74 72 2d 3e 75 73 65 63 20 2b 20 6e 6f 77 ePtr->usec + now
4dc0: 2e 75 73 65 63 29 20 25 20 31 30 30 30 30 30 30 .usec) % 1000000
4dd0: 29 3b 0a 2b 23 69 66 20 64 65 66 69 6e 65 64 28 );.+#if defined(
4de0: 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 49 HAVE_CLOCK_GETTI
4df0: 4d 45 29 20 26 26 20 64 65 66 69 6e 65 64 28 48 ME) && defined(H
4e00: 41 56 45 5f 50 54 48 52 45 41 44 5f 43 4f 4e 44 AVE_PTHREAD_COND
4e10: 41 54 54 52 5f 53 45 54 43 4c 4f 43 4b 29 0a 2b ATTR_SETCLOCK).+
4e20: 09 09 69 66 20 28 74 73 64 50 74 72 2d 3e 75 73 ..if (tsdPtr->us
4e30: 65 4d 6f 6e 6f 54 69 6d 65 29 20 7b 0a 2b 09 09 eMonoTime) {.+..
4e40: 20 20 20 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d clock_gettim
4e50: 65 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e 49 e(CLOCK_MONOTONI
4e60: 43 2c 20 26 70 74 69 6d 65 29 3b 0a 2b 09 09 7d C, &ptime);.+..}
4e70: 20 65 6c 73 65 20 7b 0a 2b 09 09 20 20 20 20 63 else {.+.. c
4e80: 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f lock_gettime(CLO
4e90: 43 4b 5f 52 45 41 4c 54 49 4d 45 2c 20 26 70 74 CK_REALTIME, &pt
4ea0: 69 6d 65 29 3b 0a 2b 09 09 7d 0a 2b 09 09 70 74 ime);.+..}.+..pt
4eb0: 69 6d 65 2e 74 76 5f 73 65 63 20 2b 3d 20 74 69 ime.tv_sec += ti
4ec0: 6d 65 50 74 72 2d 3e 73 65 63 20 2b 0a 2b 09 09 mePtr->sec +.+..
4ed0: 20 20 20 20 28 74 69 6d 65 50 74 72 2d 3e 75 73 (timePtr->us
4ee0: 65 63 20 2a 20 31 30 30 30 20 2b 20 70 74 69 6d ec * 1000 + ptim
4ef0: 65 2e 74 76 5f 6e 73 65 63 29 20 2f 20 31 30 30 e.tv_nsec) / 100
4f00: 30 30 30 30 30 30 30 3b 0a 2b 09 09 70 74 69 6d 0000000;.+..ptim
4f10: 65 2e 74 76 5f 6e 73 65 63 20 3d 20 28 74 69 6d e.tv_nsec = (tim
4f20: 65 50 74 72 2d 3e 75 73 65 63 20 2a 20 31 30 30 ePtr->usec * 100
4f30: 30 20 2b 20 70 74 69 6d 65 2e 74 76 5f 6e 73 65 0 + ptime.tv_nse
4f40: 63 29 20 25 0a 2b 09 09 20 20 20 20 31 30 30 30 c) %.+.. 1000
4f50: 30 30 30 30 30 30 3b 0a 2b 23 65 6c 73 65 0a 2b 000000;.+#else.+
4f60: 09 09 54 63 6c 5f 54 69 6d 65 20 6e 6f 77 3b 0a ..Tcl_Time now;.
4f70: 20 0a 2d 09 20 20 20 20 20 20 20 70 74 68 72 65 .-. pthre
4f80: 61 64 5f 63 6f 6e 64 5f 74 69 6d 65 64 77 61 69 ad_cond_timedwai
4f90: 74 28 26 74 73 64 50 74 72 2d 3e 77 61 69 74 43 t(&tsdPtr->waitC
4fa0: 56 2c 20 26 6e 6f 74 69 66 69 65 72 4d 75 74 65 V, ¬ifierMute
4fb0: 78 2c 20 26 70 74 69 6d 65 29 3b 0a 2b 09 09 54 x, &ptime);.+..T
4fc0: 63 6c 5f 47 65 74 54 69 6d 65 28 26 6e 6f 77 29 cl_GetTime(&now)
4fd0: 3b 0a 2b 09 09 70 74 69 6d 65 2e 74 76 5f 73 65 ;.+..ptime.tv_se
4fe0: 63 20 3d 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 c = timePtr->sec
4ff0: 20 2b 20 6e 6f 77 2e 73 65 63 20 2b 0a 2b 09 09 + now.sec +.+..
5000: 20 20 20 20 28 74 69 6d 65 50 74 72 2d 3e 75 73 (timePtr->us
5010: 65 63 20 2b 20 6e 6f 77 2e 75 73 65 63 29 20 2f ec + now.usec) /
5020: 20 31 30 30 30 30 30 30 3b 0a 2b 09 09 70 74 69 1000000;.+..pti
5030: 6d 65 2e 74 76 5f 6e 73 65 63 20 3d 20 31 30 30 me.tv_nsec = 100
5040: 30 20 2a 20 28 28 74 69 6d 65 50 74 72 2d 3e 75 0 * ((timePtr->u
5050: 73 65 63 20 2b 20 6e 6f 77 2e 75 73 65 63 29 20 sec + now.usec)
5060: 25 20 31 30 30 30 30 30 30 29 3b 0a 2b 23 65 6e % 1000000);.+#en
5070: 64 69 66 0a 2b 09 09 70 74 68 72 65 61 64 5f 63 dif.+..pthread_c
5080: 6f 6e 64 5f 74 69 6d 65 64 77 61 69 74 28 26 74 ond_timedwait(&t
5090: 73 64 50 74 72 2d 3e 77 61 69 74 43 56 2c 20 26 sdPtr->waitCV, &
50a0: 6e 6f 74 69 66 69 65 72 4d 75 74 65 78 2c 20 26 notifierMutex, &
50b0: 70 74 69 6d 65 29 3b 0a 20 09 20 20 20 20 7d 20 ptime);. . }
50c0: 65 6c 73 65 20 7b 0a 2d 09 20 20 20 20 20 20 20 else {.-.
50d0: 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f 77 61 69 pthread_cond_wai
50e0: 74 28 26 74 73 64 50 74 72 2d 3e 77 61 69 74 43 t(&tsdPtr->waitC
50f0: 56 2c 20 26 6e 6f 74 69 66 69 65 72 4d 75 74 65 V, ¬ifierMute
5100: 78 29 3b 0a 2b 09 09 70 74 68 72 65 61 64 5f 63 x);.+..pthread_c
5110: 6f 6e 64 5f 77 61 69 74 28 26 74 73 64 50 74 72 ond_wait(&tsdPtr
5120: 2d 3e 77 61 69 74 43 56 2c 20 26 6e 6f 74 69 66 ->waitCV, ¬if
5130: 69 65 72 4d 75 74 65 78 29 3b 0a 20 09 20 20 20 ierMutex);. .
5140: 20 7d 0a 20 23 65 6e 64 69 66 20 2f 2a 20 5f 5f }. #endif /* __
5150: 43 59 47 57 49 4e 5f 5f 20 2a 2f 0a 20 09 7d 0a CYGWIN__ */. .}.
5160: 20 09 74 73 64 50 74 72 2d 3e 65 76 65 6e 74 52 .tsdPtr->eventR
5170: 65 61 64 79 20 3d 20 30 3b 0a 20 0a 0a 49 6e 64 eady = 0;. ..Ind
5180: 65 78 3a 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 ex: unix/tclUnix
5190: 50 6f 72 74 2e 68 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d Port.h.=========
51a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
51b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
51c0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
51d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 75 6e =========.--- un
51e0: 69 78 2f 74 63 6c 55 6e 69 78 50 6f 72 74 2e 68 ix/tclUnixPort.h
51f0: 0a 2b 2b 2b 20 75 6e 69 78 2f 74 63 6c 55 6e 69 .+++ unix/tclUni
5200: 78 50 6f 72 74 2e 68 0a 40 40 20 2d 36 33 35 2c xPort.h.@@ -635,
5210: 31 30 20 2b 36 33 35 2c 33 30 20 40 40 0a 20 09 10 +635,30 @@. .
5220: 20 20 20 20 28 5f 5f 47 4e 55 43 5f 5f 20 3e 20 (__GNUC__ >
5230: 34 20 7c 7c 20 28 5f 5f 47 4e 55 43 5f 5f 20 3d 4 || (__GNUC__ =
5240: 3d 20 34 20 26 26 20 28 5f 5f 47 4e 55 43 5f 4d = 4 && (__GNUC_M
5250: 49 4e 4f 52 5f 5f 20 3e 20 32 20 7c 7c 20 5c 0a INOR__ > 2 || \.
5260: 20 09 20 20 20 20 28 5f 5f 47 4e 55 43 5f 4d 49 . (__GNUC_MI
5270: 4e 4f 52 5f 5f 20 3d 3d 20 32 20 26 26 20 5f 5f NOR__ == 2 && __
5280: 47 4e 55 43 5f 50 41 54 43 48 4c 45 56 45 4c 5f GNUC_PATCHLEVEL_
5290: 5f 20 3e 20 30 29 29 29 29 0a 20 23 09 75 6e 64 _ > 0)))). #.und
52a0: 65 66 20 55 53 45 5f 56 46 4f 52 4b 0a 20 23 20 ef USE_VFORK. #
52b0: 20 20 65 6e 64 69 66 20 2f 2a 20 5f 5f 6c 6c 76 endif /* __llv
52c0: 6d 5f 5f 20 2a 2f 0a 20 23 65 6e 64 69 66 20 2f m__ */. #endif /
52d0: 2a 20 5f 5f 41 50 50 4c 45 5f 5f 20 2a 2f 0a 2b * __APPLE__ */.+
52e0: 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d ..+/*.+ *-------
52f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5330: 2d 2d 2d 2d 0a 2b 20 2a 20 55 73 65 20 63 6c 6f ----.+ * Use clo
5340: 63 6b 5f 67 65 74 74 69 6d 65 28 29 20 6f 6e 6c ck_gettime() onl
5350: 79 20 69 66 20 5f 50 4f 53 49 58 5f 4d 4f 4e 4f y if _POSIX_MONO
5360: 54 4f 4e 49 43 5f 43 4c 4f 43 4b 20 70 72 65 73 TONIC_CLOCK pres
5370: 65 6e 74 2e 0a 2b 20 2a 2d 2d 2d 2d 2d 2d 2d 2d ent..+ *--------
5380: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5390: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
53a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
53b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
53c0: 2d 2d 2d 0a 2b 20 2a 2f 0a 2b 0a 2b 23 69 66 20 ---.+ */.+.+#if
53d0: 64 65 66 69 6e 65 64 28 48 41 56 45 5f 43 4c 4f defined(HAVE_CLO
53e0: 43 4b 5f 47 45 54 54 49 4d 45 29 20 26 26 20 21 CK_GETTIME) && !
53f0: 64 65 66 69 6e 65 64 28 5f 50 4f 53 49 58 5f 4d defined(_POSIX_M
5400: 4f 4e 4f 54 4f 4e 49 43 5f 43 4c 4f 43 4b 29 0a ONOTONIC_CLOCK).
5410: 2b 23 20 20 20 75 6e 64 65 66 20 48 41 56 45 5f +# undef HAVE_
5420: 43 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 0a 2b 23 CLOCK_GETTIME.+#
5430: 65 6e 64 69 66 0a 2b 0a 2b 23 69 66 64 65 66 20 endif.+.+#ifdef
5440: 54 43 4c 5f 54 48 52 45 41 44 53 0a 2b 23 20 20 TCL_THREADS.+#
5450: 20 69 66 6e 64 65 66 20 48 41 56 45 5f 43 4c 4f ifndef HAVE_CLO
5460: 43 4b 5f 47 45 54 54 49 4d 45 0a 2b 23 09 75 6e CK_GETTIME.+#.un
5470: 64 65 66 20 48 41 56 45 5f 50 54 48 52 45 41 44 def HAVE_PTHREAD
5480: 5f 43 4f 4e 44 41 54 54 52 5f 53 45 54 43 4c 4f _CONDATTR_SETCLO
5490: 43 4b 0a 2b 23 20 20 20 65 6e 64 69 66 0a 2b 23 CK.+# endif.+#
54a0: 20 20 20 69 66 6e 64 65 66 20 48 41 56 45 5f 50 ifndef HAVE_P
54b0: 54 48 52 45 41 44 5f 43 4f 4e 44 41 54 54 52 5f THREAD_CONDATTR_
54c0: 53 45 54 43 4c 4f 43 4b 0a 2b 23 09 75 6e 64 65 SETCLOCK.+#.unde
54d0: 66 20 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 f HAVE_CLOCK_GET
54e0: 54 49 4d 45 0a 2b 23 20 20 20 65 6e 64 69 66 0a TIME.+# endif.
54f0: 2b 23 65 6e 64 69 66 0a 2b 0a 20 0c 0a 20 2f 2a +#endif.+. .. /*
5500: 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d . *------------
5510: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5520: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5530: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
5540: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------.
5550: 20 20 2a 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e * The followin
5560: 67 20 6d 61 63 72 6f 73 20 61 6e 64 20 64 65 63 g macros and dec
5570: 6c 61 72 61 74 69 6f 6e 73 20 72 65 70 72 65 73 larations repres
5580: 65 6e 74 20 74 68 65 20 69 6e 74 65 72 66 61 63 ent the interfac
5590: 65 20 62 65 74 77 65 65 6e 0a 20 20 2a 20 67 65 e between. * ge
55a0: 6e 65 72 69 63 20 61 6e 64 20 75 6e 69 78 2d 73 neric and unix-s
55b0: 70 65 63 69 66 69 63 20 70 61 72 74 73 20 6f 66 pecific parts of
55c0: 20 54 63 6c 2e 20 53 6f 6d 65 20 6f 66 20 74 68 Tcl. Some of th
55d0: 65 20 6d 61 63 72 6f 73 20 6d 61 79 20 6f 76 65 e macros may ove
55e0: 72 72 69 64 65 0a 0a 49 6e 64 65 78 3a 20 75 6e rride..Index: un
55f0: 69 78 2f 74 63 6c 55 6e 69 78 54 68 72 64 2e 63 ix/tclUnixThrd.c
5600: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
5610: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5620: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5630: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5640: 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 78 2f 74 63 6c ===.--- unix/tcl
5650: 55 6e 69 78 54 68 72 64 2e 63 0a 2b 2b 2b 20 75 UnixThrd.c.+++ u
5660: 6e 69 78 2f 74 63 6c 55 6e 69 78 54 68 72 64 2e nix/tclUnixThrd.
5670: 63 0a 40 40 20 2d 35 32 35 2c 31 30 20 2b 35 32 c.@@ -525,10 +52
5680: 35 2c 31 33 20 40 40 0a 20 20 20 20 20 63 6f 6e 5,13 @@. con
5690: 73 74 20 54 63 6c 5f 54 69 6d 65 20 2a 74 69 6d st Tcl_Time *tim
56a0: 65 50 74 72 29 20 2f 2a 20 54 69 6d 65 6f 75 74 ePtr) /* Timeout
56b0: 20 6f 6e 20 77 61 69 74 69 6e 67 20 70 65 72 69 on waiting peri
56c0: 6f 64 20 2a 2f 0a 20 7b 0a 20 20 20 20 20 70 74 od */. {. pt
56d0: 68 72 65 61 64 5f 63 6f 6e 64 5f 74 20 2a 70 63 hread_cond_t *pc
56e0: 6f 6e 64 50 74 72 3b 0a 20 20 20 20 20 70 74 68 ondPtr;. pth
56f0: 72 65 61 64 5f 6d 75 74 65 78 5f 74 20 2a 70 6d read_mutex_t *pm
5700: 75 74 65 78 50 74 72 3b 0a 20 20 20 20 20 73 74 utexPtr;. st
5710: 72 75 63 74 20 74 69 6d 65 73 70 65 63 20 70 74 ruct timespec pt
5720: 69 6d 65 3b 0a 2b 23 69 66 20 64 65 66 69 6e 65 ime;.+#if define
5730: 64 28 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 d(HAVE_CLOCK_GET
5740: 54 49 4d 45 29 20 26 26 20 64 65 66 69 6e 65 64 TIME) && defined
5750: 28 48 41 56 45 5f 50 54 48 52 45 41 44 5f 43 4f (HAVE_PTHREAD_CO
5760: 4e 44 41 54 54 52 5f 53 45 54 43 4c 4f 43 4b 29 NDATTR_SETCLOCK)
5770: 0a 2b 20 20 20 20 69 6e 74 20 2a 66 6c 61 67 50 .+ int *flagP
5780: 74 72 3b 0a 2b 23 65 6e 64 69 66 0a 20 0a 20 20 tr;.+#endif. .
5790: 20 20 20 69 66 20 28 2a 63 6f 6e 64 50 74 72 20 if (*condPtr
57a0: 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 20 09 4d 41 53 == NULL) {. .MAS
57b0: 54 45 52 5f 4c 4f 43 4b 3b 0a 20 0a 20 09 2f 2a TER_LOCK;. . ./*
57c0: 0a 40 40 20 2d 35 33 35 2c 31 32 20 2b 35 33 38 .@@ -535,12 +538
57d0: 2c 33 30 20 40 40 0a 20 09 20 2a 20 44 6f 75 62 ,30 @@. . * Doub
57e0: 6c 65 20 63 68 65 63 6b 20 69 6e 73 69 64 65 20 le check inside
57f0: 6d 75 74 65 78 20 74 6f 20 61 76 6f 69 64 20 72 mutex to avoid r
5800: 61 63 65 2c 20 74 68 65 6e 20 69 6e 69 74 69 61 ace, then initia
5810: 6c 69 7a 65 20 63 6f 6e 64 69 74 69 6f 6e 0a 20 lize condition.
5820: 09 20 2a 20 76 61 72 69 61 62 6c 65 20 69 66 20 . * variable if
5830: 6e 65 63 65 73 73 61 72 79 2e 0a 20 09 20 2a 2f necessary.. . */
5840: 0a 20 0a 20 09 69 66 20 28 2a 63 6f 6e 64 50 74 . . .if (*condPt
5850: 72 20 3d 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 23 69 r == NULL) {.+#i
5860: 66 20 64 65 66 69 6e 65 64 28 48 41 56 45 5f 43 f defined(HAVE_C
5870: 4c 4f 43 4b 5f 47 45 54 54 49 4d 45 29 20 26 26 LOCK_GETTIME) &&
5880: 20 64 65 66 69 6e 65 64 28 48 41 56 45 5f 50 54 defined(HAVE_PT
5890: 48 52 45 41 44 5f 43 4f 4e 44 41 54 54 52 5f 53 HREAD_CONDATTR_S
58a0: 45 54 43 4c 4f 43 4b 29 0a 2b 09 20 20 20 20 70 ETCLOCK).+. p
58b0: 74 68 72 65 61 64 5f 63 6f 6e 64 61 74 74 72 5f thread_condattr_
58c0: 74 20 61 74 74 72 3b 0a 2b 0a 2b 09 20 20 20 20 t attr;.+.+.
58d0: 70 63 6f 6e 64 50 74 72 20 3d 20 63 6b 61 6c 6c pcondPtr = ckall
58e0: 6f 63 28 73 69 7a 65 6f 66 28 70 74 68 72 65 61 oc(sizeof(pthrea
58f0: 64 5f 63 6f 6e 64 5f 74 29 20 2b 20 73 69 7a 65 d_cond_t) + size
5900: 6f 66 28 69 6e 74 29 29 3b 0a 2b 09 20 20 20 20 of(int));.+.
5910: 66 6c 61 67 50 74 72 20 3d 20 28 69 6e 74 20 2a flagPtr = (int *
5920: 29 20 28 70 63 6f 6e 64 50 74 72 20 2b 20 31 29 ) (pcondPtr + 1)
5930: 3b 0a 2b 09 20 20 20 20 70 74 68 72 65 61 64 5f ;.+. pthread_
5940: 63 6f 6e 64 61 74 74 72 5f 69 6e 69 74 28 26 61 condattr_init(&a
5950: 74 74 72 29 3b 0a 2b 09 20 20 20 20 2a 66 6c 61 ttr);.+. *fla
5960: 67 50 74 72 20 3d 20 70 74 68 72 65 61 64 5f 63 gPtr = pthread_c
5970: 6f 6e 64 61 74 74 72 5f 73 65 74 63 6c 6f 63 6b ondattr_setclock
5980: 28 26 61 74 74 72 2c 20 43 4c 4f 43 4b 5f 4d 4f (&attr, CLOCK_MO
5990: 4e 4f 54 4f 4e 49 43 29 20 3d 3d 20 30 3b 0a 2b NOTONIC) == 0;.+
59a0: 09 20 20 20 20 69 66 20 28 2a 66 6c 61 67 50 74 . if (*flagPt
59b0: 72 29 20 7b 0a 2b 09 09 69 66 20 28 70 74 68 72 r) {.+..if (pthr
59c0: 65 61 64 5f 63 6f 6e 64 5f 69 6e 69 74 28 70 63 ead_cond_init(pc
59d0: 6f 6e 64 50 74 72 2c 20 26 61 74 74 72 29 29 20 ondPtr, &attr))
59e0: 7b 0a 2b 09 09 20 20 20 20 2a 66 6c 61 67 50 74 {.+.. *flagPt
59f0: 72 20 3d 20 30 3b 0a 2b 09 09 20 20 20 20 70 74 r = 0;.+.. pt
5a00: 68 72 65 61 64 5f 63 6f 6e 64 5f 69 6e 69 74 28 hread_cond_init(
5a10: 70 63 6f 6e 64 50 74 72 2c 20 4e 55 4c 4c 29 3b pcondPtr, NULL);
5a20: 0a 2b 09 09 7d 0a 2b 09 20 20 20 20 7d 20 65 6c .+..}.+. } el
5a30: 73 65 20 7b 0a 2b 09 09 70 74 68 72 65 61 64 5f se {.+..pthread_
5a40: 63 6f 6e 64 5f 69 6e 69 74 28 70 63 6f 6e 64 50 cond_init(pcondP
5a50: 74 72 2c 20 4e 55 4c 4c 29 3b 0a 2b 09 20 20 20 tr, NULL);.+.
5a60: 20 7d 0a 2b 09 20 20 20 20 70 74 68 72 65 61 64 }.+. pthread
5a70: 5f 63 6f 6e 64 61 74 74 72 5f 64 65 73 74 72 6f _condattr_destro
5a80: 79 28 26 61 74 74 72 29 3b 0a 2b 23 65 6c 73 65 y(&attr);.+#else
5a90: 0a 20 09 20 20 20 20 70 63 6f 6e 64 50 74 72 20 . . pcondPtr
5aa0: 3d 20 63 6b 61 6c 6c 6f 63 28 73 69 7a 65 6f 66 = ckalloc(sizeof
5ab0: 28 70 74 68 72 65 61 64 5f 63 6f 6e 64 5f 74 29 (pthread_cond_t)
5ac0: 29 3b 0a 20 09 20 20 20 20 70 74 68 72 65 61 64 );. . pthread
5ad0: 5f 63 6f 6e 64 5f 69 6e 69 74 28 70 63 6f 6e 64 _cond_init(pcond
5ae0: 50 74 72 2c 20 4e 55 4c 4c 29 3b 0a 2b 23 65 6e Ptr, NULL);.+#en
5af0: 64 69 66 0a 20 09 20 20 20 20 2a 63 6f 6e 64 50 dif. . *condP
5b00: 74 72 20 3d 20 28 54 63 6c 5f 43 6f 6e 64 69 74 tr = (Tcl_Condit
5b10: 69 6f 6e 29 20 70 63 6f 6e 64 50 74 72 3b 0a 20 ion) pcondPtr;.
5b20: 09 20 20 20 20 54 63 6c 52 65 6d 65 6d 62 65 72 . TclRemember
5b30: 43 6f 6e 64 69 74 69 6f 6e 28 63 6f 6e 64 50 74 Condition(condPt
5b40: 72 29 3b 0a 20 09 7d 0a 20 09 4d 41 53 54 45 52 r);. .}. .MASTER
5b50: 5f 55 4e 4c 4f 43 4b 3b 0a 20 20 20 20 20 7d 0a _UNLOCK;. }.
5b60: 40 40 20 2d 35 34 37 2c 31 30 20 2b 35 36 38 2c @@ -547,10 +568,
5b70: 32 31 20 40 40 0a 20 20 20 20 20 70 6d 75 74 65 21 @@. pmute
5b80: 78 50 74 72 20 3d 20 2a 28 28 70 74 68 72 65 61 xPtr = *((pthrea
5b90: 64 5f 6d 75 74 65 78 5f 74 20 2a 2a 29 6d 75 74 d_mutex_t **)mut
5ba0: 65 78 50 74 72 29 3b 0a 20 20 20 20 20 70 63 6f exPtr);. pco
5bb0: 6e 64 50 74 72 20 3d 20 2a 28 28 70 74 68 72 65 ndPtr = *((pthre
5bc0: 61 64 5f 63 6f 6e 64 5f 74 20 2a 2a 29 63 6f 6e ad_cond_t **)con
5bd0: 64 50 74 72 29 3b 0a 20 20 20 20 20 69 66 20 28 dPtr);. if (
5be0: 74 69 6d 65 50 74 72 20 3d 3d 20 4e 55 4c 4c 29 timePtr == NULL)
5bf0: 20 7b 0a 20 09 70 74 68 72 65 61 64 5f 63 6f 6e {. .pthread_con
5c00: 64 5f 77 61 69 74 28 70 63 6f 6e 64 50 74 72 2c d_wait(pcondPtr,
5c10: 20 70 6d 75 74 65 78 50 74 72 29 3b 0a 20 20 20 pmutexPtr);.
5c20: 20 20 7d 20 65 6c 73 65 20 7b 0a 2b 23 69 66 20 } else {.+#if
5c30: 64 65 66 69 6e 65 64 28 48 41 56 45 5f 43 4c 4f defined(HAVE_CLO
5c40: 43 4b 5f 47 45 54 54 49 4d 45 29 20 26 26 20 64 CK_GETTIME) && d
5c50: 65 66 69 6e 65 64 28 48 41 56 45 5f 50 54 48 52 efined(HAVE_PTHR
5c60: 45 41 44 5f 43 4f 4e 44 41 54 54 52 5f 53 45 54 EAD_CONDATTR_SET
5c70: 43 4c 4f 43 4b 29 0a 2b 09 66 6c 61 67 50 74 72 CLOCK).+.flagPtr
5c80: 20 3d 20 28 69 6e 74 20 2a 29 20 28 70 63 6f 6e = (int *) (pcon
5c90: 64 50 74 72 20 2b 20 31 29 3b 0a 2b 09 69 66 20 dPtr + 1);.+.if
5ca0: 28 2a 66 6c 61 67 50 74 72 29 20 7b 0a 2b 09 20 (*flagPtr) {.+.
5cb0: 20 20 20 63 6c 6f 63 6b 5f 67 65 74 74 69 6d 65 clock_gettime
5cc0: 28 43 4c 4f 43 4b 5f 4d 4f 4e 4f 54 4f 4e 49 43 (CLOCK_MONOTONIC
5cd0: 2c 20 26 70 74 69 6d 65 29 3b 0a 2b 09 7d 20 65 , &ptime);.+.} e
5ce0: 6c 73 65 20 7b 0a 2b 09 20 20 20 20 63 6c 6f 63 lse {.+. cloc
5cf0: 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f k_gettime(CLOCK_
5d00: 52 45 41 4c 54 49 4d 45 2c 20 26 70 74 69 6d 65 REALTIME, &ptime
5d10: 29 3b 0a 2b 09 7d 0a 2b 09 70 74 69 6d 65 2e 74 );.+.}.+.ptime.t
5d20: 76 5f 73 65 63 20 2b 3d 20 74 69 6d 65 50 74 72 v_sec += timePtr
5d30: 2d 3e 73 65 63 20 2b 0a 2b 09 20 20 20 20 28 74 ->sec +.+. (t
5d40: 69 6d 65 50 74 72 2d 3e 75 73 65 63 20 2a 20 31 imePtr->usec * 1
5d50: 30 30 30 20 2b 20 70 74 69 6d 65 2e 74 76 5f 6e 000 + ptime.tv_n
5d60: 73 65 63 29 20 2f 20 31 30 30 30 30 30 30 30 30 sec) / 100000000
5d70: 30 3b 0a 2b 09 70 74 69 6d 65 2e 74 76 5f 6e 73 0;.+.ptime.tv_ns
5d80: 65 63 20 3d 20 28 74 69 6d 65 50 74 72 2d 3e 75 ec = (timePtr->u
5d90: 73 65 63 20 2a 20 31 30 30 30 20 2b 20 70 74 69 sec * 1000 + pti
5da0: 6d 65 2e 74 76 5f 6e 73 65 63 29 20 25 20 31 30 me.tv_nsec) % 10
5db0: 30 30 30 30 30 30 30 30 3b 0a 2b 23 65 6c 73 65 00000000;.+#else
5dc0: 0a 20 09 54 63 6c 5f 54 69 6d 65 20 6e 6f 77 3b . .Tcl_Time now;
5dd0: 0a 20 0a 20 09 2f 2a 0a 20 09 20 2a 20 4d 61 6b . . ./*. . * Mak
5de0: 65 20 73 75 72 65 20 74 6f 20 74 61 6b 65 20 69 e sure to take i
5df0: 6e 74 6f 20 61 63 63 6f 75 6e 74 20 74 68 65 20 nto account the
5e00: 6d 69 63 72 6f 73 65 63 6f 6e 64 20 63 6f 6d 70 microsecond comp
5e10: 6f 6e 65 6e 74 20 6f 66 20 74 68 65 0a 20 09 20 onent of the. .
5e20: 2a 20 63 75 72 72 65 6e 74 20 74 69 6d 65 2c 20 * current time,
5e30: 69 6e 63 6c 75 64 69 6e 67 20 70 6f 73 73 69 62 including possib
5e40: 6c 65 20 6f 76 65 72 66 6c 6f 77 20 73 69 74 75 le overflow situ
5e50: 61 74 69 6f 6e 73 2e 20 5b 42 75 67 20 23 34 31 ations. [Bug #41
5e60: 31 36 30 33 5d 0a 40 40 20 2d 35 35 38 2c 31 30 1603].@@ -558,10
5e70: 20 2b 35 39 30 2c 31 31 20 40 40 0a 20 0a 20 09 +590,11 @@. . .
5e80: 54 63 6c 5f 47 65 74 54 69 6d 65 28 26 6e 6f 77 Tcl_GetTime(&now
5e90: 29 3b 0a 20 09 70 74 69 6d 65 2e 74 76 5f 73 65 );. .ptime.tv_se
5ea0: 63 20 3d 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 c = timePtr->sec
5eb0: 20 2b 20 6e 6f 77 2e 73 65 63 20 2b 0a 20 09 20 + now.sec +. .
5ec0: 20 20 20 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 (timePtr->use
5ed0: 63 20 2b 20 6e 6f 77 2e 75 73 65 63 29 20 2f 20 c + now.usec) /
5ee0: 31 30 30 30 30 30 30 3b 0a 20 09 70 74 69 6d 65 1000000;. .ptime
5ef0: 2e 74 76 5f 6e 73 65 63 20 3d 20 31 30 30 30 20 .tv_nsec = 1000
5f00: 2a 20 28 28 74 69 6d 65 50 74 72 2d 3e 75 73 65 * ((timePtr->use
5f10: 63 20 2b 20 6e 6f 77 2e 75 73 65 63 29 20 25 20 c + now.usec) %
5f20: 31 30 30 30 30 30 30 29 3b 0a 2b 23 65 6e 64 69 1000000);.+#endi
5f30: 66 0a 20 09 70 74 68 72 65 61 64 5f 63 6f 6e 64 f. .pthread_cond
5f40: 5f 74 69 6d 65 64 77 61 69 74 28 70 63 6f 6e 64 _timedwait(pcond
5f50: 50 74 72 2c 20 70 6d 75 74 65 78 50 74 72 2c 20 Ptr, pmutexPtr,
5f60: 26 70 74 69 6d 65 29 3b 0a 20 20 20 20 20 7d 0a &ptime);. }.
5f70: 20 7d 0a 20 0c 0a 20 2f 2a 0a 0a 49 6e 64 65 78 }. .. /*..Index
5f80: 3a 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 54 69 : unix/tclUnixTi
5f90: 6d 65 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d me.c.===========
5fa0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5fb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5fc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
5fd0: 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 75 6e 69 78 =======.--- unix
5fe0: 2f 74 63 6c 55 6e 69 78 54 69 6d 65 2e 63 0a 2b /tclUnixTime.c.+
5ff0: 2b 2b 20 75 6e 69 78 2f 74 63 6c 55 6e 69 78 54 ++ unix/tclUnixT
6000: 69 6d 65 2e 63 0a 40 40 20 2d 35 32 39 2c 31 33 ime.c.@@ -529,13
6010: 20 2b 35 32 39 2c 35 34 20 40 40 0a 20 43 6c 65 +529,54 @@. Cle
6020: 61 6e 75 70 4d 65 6d 6f 72 79 28 0a 20 20 20 20 anupMemory(.
6030: 20 43 6c 69 65 6e 74 44 61 74 61 20 69 67 6e 6f ClientData igno
6040: 72 65 64 29 0a 20 7b 0a 20 20 20 20 20 63 6b 66 red). {. ckf
6050: 72 65 65 28 6c 61 73 74 54 5a 29 3b 0a 20 7d 0a ree(lastTZ);. }.
6060: 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d +..+/*.+ *------
6070: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6080: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6090: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
60a0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
60b0: 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c 70 47 65 74 .+ *.+ * TclpGet
60c0: 4d 6f 6e 6f 6e 6f 74 69 63 54 69 6d 65 20 2d 2d MononoticTime --
60d0: 0a 2b 20 2a 0a 2b 20 2a 09 4c 69 6b 65 20 54 63 .+ *.+ *.Like Tc
60e0: 6c 5f 47 65 74 54 69 6d 65 28 29 20 62 75 74 20 l_GetTime() but
60f0: 72 65 74 75 72 6e 20 61 20 6d 6f 6e 6f 74 6f 6e return a monoton
6100: 69 63 20 63 6c 6f 63 6b 20 73 6f 75 72 63 65 2c ic clock source,
6110: 0a 2b 20 2a 09 69 66 20 70 6f 73 73 69 62 6c 65 .+ *.if possible
6120: 2e 20 4f 74 68 65 72 77 69 73 65 20 66 61 6c 6c . Otherwise fall
6130: 20 62 61 63 6b 20 74 6f 20 72 65 61 6c 20 28 77 back to real (w
6140: 61 6c 6c 20 63 6c 6f 63 6b 29 20 74 69 6d 65 2e all clock) time.
6150: 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 .+ *.+ * Results
6160: 3a 0a 2b 20 2a 09 31 20 69 66 20 6d 6f 6e 6f 74 :.+ *.1 if monot
6170: 6f 6e 69 63 2c 20 30 20 6f 74 68 65 72 77 69 73 onic, 0 otherwis
6180: 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 e..+ *.+ * Side
6190: 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 4e 6f 6e effects:.+ *.Non
61a0: 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d e..+ *.+ *------
61b0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
61c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
61d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
61e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
61f0: 0a 2b 20 2a 2f 0a 2b 0a 2b 69 6e 74 0a 2b 54 63 .+ */.+.+int.+Tc
6200: 6c 70 47 65 74 4d 6f 6e 6f 74 6f 6e 69 63 54 69 lpGetMonotonicTi
6210: 6d 65 28 54 63 6c 5f 54 69 6d 65 20 2a 74 69 6d me(Tcl_Time *tim
6220: 65 50 74 72 29 0a 2b 7b 0a 2b 23 69 66 64 65 66 ePtr).+{.+#ifdef
6230: 20 48 41 56 45 5f 43 4c 4f 43 4b 5f 47 45 54 54 HAVE_CLOCK_GETT
6240: 49 4d 45 0a 2b 20 20 20 20 69 6e 74 20 72 65 74 IME.+ int ret
6250: 3b 0a 2b 20 20 20 20 73 74 72 75 63 74 20 74 69 ;.+ struct ti
6260: 6d 65 73 70 65 63 20 74 73 3b 0a 2b 0a 2b 20 20 mespec ts;.+.+
6270: 20 20 72 65 74 20 3d 20 28 63 6c 6f 63 6b 5f 67 ret = (clock_g
6280: 65 74 74 69 6d 65 28 43 4c 4f 43 4b 5f 4d 4f 4e ettime(CLOCK_MON
6290: 4f 54 4f 4e 49 43 2c 20 26 74 73 29 20 3d 3d 20 OTONIC, &ts) ==
62a0: 30 29 3b 0a 2b 20 20 20 20 69 66 20 28 21 72 65 0);.+ if (!re
62b0: 74 29 20 7b 0a 2b 09 28 76 6f 69 64 29 20 63 6c t) {.+.(void) cl
62c0: 6f 63 6b 5f 67 65 74 74 69 6d 65 28 43 4c 4f 43 ock_gettime(CLOC
62d0: 4b 5f 52 45 41 4c 54 49 4d 45 2c 20 26 74 73 29 K_REALTIME, &ts)
62e0: 3b 0a 2b 20 20 20 20 7d 0a 2b 20 20 20 20 74 69 ;.+ }.+ ti
62f0: 6d 65 50 74 72 2d 3e 73 65 63 20 3d 20 74 73 2e mePtr->sec = ts.
6300: 74 76 5f 73 65 63 3b 0a 2b 20 20 20 20 74 69 6d tv_sec;.+ tim
6310: 65 50 74 72 2d 3e 75 73 65 63 20 3d 20 74 73 2e ePtr->usec = ts.
6320: 74 76 5f 6e 73 65 63 20 2f 20 31 30 30 30 3b 0a tv_nsec / 1000;.
6330: 2b 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 3b + return ret;
6340: 0a 2b 23 65 6c 73 65 0a 2b 20 20 20 20 73 74 72 .+#else.+ str
6350: 75 63 74 20 74 69 6d 65 76 61 6c 20 74 76 3b 0a uct timeval tv;.
6360: 2b 0a 2b 20 20 20 20 28 76 6f 69 64 29 20 67 65 +.+ (void) ge
6370: 74 74 69 6d 65 6f 66 64 61 79 28 26 74 76 2c 20 ttimeofday(&tv,
6380: 4e 55 4c 4c 29 3b 0a 2b 20 20 20 20 74 69 6d 65 NULL);.+ time
6390: 50 74 72 2d 3e 73 65 63 20 3d 20 74 76 2e 74 76 Ptr->sec = tv.tv
63a0: 5f 73 65 63 3b 0a 2b 20 20 20 20 74 69 6d 65 50 _sec;.+ timeP
63b0: 74 72 2d 3e 75 73 65 63 20 3d 20 74 76 2e 74 76 tr->usec = tv.tv
63c0: 5f 75 73 65 63 3b 0a 2b 20 20 20 20 72 65 74 75 _usec;.+ retu
63d0: 72 6e 20 30 3b 0a 2b 23 65 6e 64 69 66 0a 2b 7d rn 0;.+#endif.+}
63e0: 0a 20 0c 0a 20 2f 2a 0a 20 20 2a 20 4c 6f 63 61 . .. /*. * Loca
63f0: 6c 20 56 61 72 69 61 62 6c 65 73 3a 0a 20 20 2a l Variables:. *
6400: 20 6d 6f 64 65 3a 20 63 0a 20 20 2a 20 63 2d 62 mode: c. * c-b
6410: 61 73 69 63 2d 6f 66 66 73 65 74 3a 20 34 0a 20 asic-offset: 4.
6420: 20 2a 20 66 69 6c 6c 2d 63 6f 6c 75 6d 6e 3a 20 * fill-column:
6430: 37 38 0a 20 20 2a 20 45 6e 64 3a 0a 20 20 2a 2f 78. * End:. */
6440: 0a 0a 49 6e 64 65 78 3a 20 77 69 6e 2f 63 6f 6e ..Index: win/con
6450: 66 69 67 75 72 65 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d figure.=========
6460: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6470: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6480: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6490: 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 77 69 =========.--- wi
64a0: 6e 2f 63 6f 6e 66 69 67 75 72 65 0a 2b 2b 2b 20 n/configure.+++
64b0: 77 69 6e 2f 63 6f 6e 66 69 67 75 72 65 0a 40 40 win/configure.@@
64c0: 20 2d 38 35 31 2c 31 30 20 2b 38 35 31 2c 31 31 -851,10 +851,11
64d0: 20 40 40 0a 20 4f 70 74 69 6f 6e 61 6c 20 50 61 @@. Optional Pa
64e0: 63 6b 61 67 65 73 3a 0a 20 20 20 2d 2d 77 69 74 ckages:. --wit
64f0: 68 2d 50 41 43 4b 41 47 45 5b 3d 41 52 47 5d 20 h-PACKAGE[=ARG]
6500: 20 20 20 75 73 65 20 50 41 43 4b 41 47 45 20 5b use PACKAGE [
6510: 41 52 47 3d 79 65 73 5d 0a 20 20 20 2d 2d 77 69 ARG=yes]. --wi
6520: 74 68 6f 75 74 2d 50 41 43 4b 41 47 45 20 20 20 thout-PACKAGE
6530: 20 20 20 20 64 6f 20 6e 6f 74 20 75 73 65 20 50 do not use P
6540: 41 43 4b 41 47 45 20 28 73 61 6d 65 20 61 73 20 ACKAGE (same as
6550: 2d 2d 77 69 74 68 2d 50 41 43 4b 41 47 45 3d 6e --with-PACKAGE=n
6560: 6f 29 0a 20 20 20 2d 2d 77 69 74 68 2d 65 6e 63 o). --with-enc
6570: 6f 64 69 6e 67 20 20 20 20 20 20 20 20 20 65 6e oding en
6580: 63 6f 64 69 6e 67 20 66 6f 72 20 63 6f 6e 66 69 coding for confi
6590: 67 75 72 61 74 69 6f 6e 20 76 61 6c 75 65 73 0a guration values.
65a0: 20 20 20 2d 2d 77 69 74 68 2d 63 65 6c 69 62 3d --with-celib=
65b0: 44 49 52 20 20 20 20 20 20 20 20 75 73 65 20 57 DIR use W
65c0: 69 6e 64 6f 77 73 2f 43 45 20 73 75 70 70 6f 72 indows/CE suppor
65d0: 74 20 6c 69 62 72 61 72 79 20 66 72 6f 6d 20 44 t library from D
65e0: 49 52 0a 2b 20 20 2d 2d 77 69 74 68 2d 74 69 63 IR.+ --with-tic
65f0: 6b 63 6f 75 6e 74 20 20 20 20 20 20 20 20 75 73 kcount us
6600: 65 20 47 65 74 54 69 63 6b 43 6f 75 6e 74 20 66 e GetTickCount f
6610: 6f 72 20 74 69 6d 65 72 73 2c 20 74 75 72 6e 73 or timers, turns
6620: 20 6f 66 66 20 54 49 50 20 23 32 33 33 0a 20 0a off TIP #233. .
6630: 20 53 6f 6d 65 20 69 6e 66 6c 75 65 6e 74 69 61 Some influentia
6640: 6c 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 20 76 61 l environment va
6650: 72 69 61 62 6c 65 73 3a 0a 20 20 20 43 43 20 20 riables:. CC
6660: 20 20 20 20 20 20 20 20 43 20 63 6f 6d 70 69 6c C compil
6670: 65 72 20 63 6f 6d 6d 61 6e 64 0a 20 20 20 43 46 er command. CF
6680: 4c 41 47 53 20 20 20 20 20 20 43 20 63 6f 6d 70 LAGS C comp
6690: 69 6c 65 72 20 66 6c 61 67 73 0a 20 20 20 4c 44 iler flags. LD
66a0: 46 4c 41 47 53 20 20 20 20 20 6c 69 6e 6b 65 72 FLAGS linker
66b0: 20 66 6c 61 67 73 2c 20 65 2e 67 2e 20 2d 4c 3c flags, e.g. -L<
66c0: 6c 69 62 20 64 69 72 3e 20 69 66 20 79 6f 75 20 lib dir> if you
66d0: 68 61 76 65 20 6c 69 62 72 61 72 69 65 73 20 69 have libraries i
66e0: 6e 20 61 0a 40 40 20 2d 34 34 30 35 2c 31 30 20 n a.@@ -4405,10
66f0: 2b 34 34 30 36 2c 32 37 20 40 40 0a 20 0a 20 63 +4406,27 @@. . c
6700: 61 74 20 3e 3e 63 6f 6e 66 64 65 66 73 2e 68 20 at >>confdefs.h
6710: 3c 3c 5c 5f 41 43 45 4f 46 0a 20 23 64 65 66 69 <<\_ACEOF. #defi
6720: 6e 65 20 48 41 56 45 5f 5a 4c 49 42 20 31 0a 20 ne HAVE_ZLIB 1.
6730: 5f 41 43 45 4f 46 0a 20 0a 2b 0a 2b 23 20 43 68 _ACEOF. .+.+# Ch
6740: 65 63 6b 20 77 68 65 74 68 65 72 20 2d 2d 77 69 eck whether --wi
6750: 74 68 2d 74 69 63 6b 63 6f 75 6e 74 20 6f 72 20 th-tickcount or
6760: 2d 2d 77 69 74 68 6f 75 74 2d 74 69 63 6b 63 6f --without-tickco
6770: 75 6e 74 20 77 61 73 20 67 69 76 65 6e 2e 0a 2b unt was given..+
6780: 69 66 20 74 65 73 74 20 22 24 7b 77 69 74 68 5f if test "${with_
6790: 74 69 63 6b 63 6f 75 6e 74 2b 73 65 74 7d 22 20 tickcount+set}"
67a0: 3d 20 73 65 74 3b 20 74 68 65 6e 0a 2b 20 20 77 = set; then.+ w
67b0: 69 74 68 76 61 6c 3d 22 24 77 69 74 68 5f 74 69 ithval="$with_ti
67c0: 63 6b 63 6f 75 6e 74 22 0a 2b 20 20 74 63 6c 5f ckcount".+ tcl_
67d0: 6f 6b 3d 24 77 69 74 68 76 61 6c 0a 2b 65 6c 73 ok=$withval.+els
67e0: 65 0a 2b 20 20 74 63 6c 5f 6f 6b 3d 6e 6f 0a 2b e.+ tcl_ok=no.+
67f0: 66 69 3b 0a 2b 65 63 68 6f 20 22 24 61 73 5f 6d fi;.+echo "$as_m
6800: 65 3a 24 4c 49 4e 45 4e 4f 3a 20 72 65 73 75 6c e:$LINENO: resul
6810: 74 3a 20 24 74 63 6c 5f 6f 6b 22 20 3e 26 35 0a t: $tcl_ok" >&5.
6820: 2b 65 63 68 6f 20 22 24 7b 45 43 48 4f 5f 54 7d +echo "${ECHO_T}
6830: 24 74 63 6c 5f 6f 6b 22 20 3e 26 36 0a 2b 69 66 $tcl_ok" >&6.+if
6840: 20 74 65 73 74 20 24 74 63 6c 5f 6f 6b 20 3d 20 test $tcl_ok =
6850: 79 65 73 3b 20 74 68 65 6e 0a 2b 0a 2b 63 61 74 yes; then.+.+cat
6860: 20 3e 3e 63 6f 6e 66 64 65 66 73 2e 68 20 3c 3c >>confdefs.h <<
6870: 5c 5f 41 43 45 4f 46 0a 2b 23 64 65 66 69 6e 65 \_ACEOF.+#define
6880: 20 57 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 WIN32_USE_TICKC
6890: 4f 55 4e 54 20 31 0a 2b 5f 41 43 45 4f 46 0a 2b OUNT 1.+_ACEOF.+
68a0: 0a 2b 66 69 0a 20 0a 20 65 63 68 6f 20 22 24 61 .+fi. . echo "$a
68b0: 73 5f 6d 65 3a 24 4c 49 4e 45 4e 4f 3a 20 63 68 s_me:$LINENO: ch
68c0: 65 63 6b 69 6e 67 20 66 6f 72 20 69 6e 74 70 74 ecking for intpt
68d0: 72 5f 74 22 20 3e 26 35 0a 20 65 63 68 6f 20 24 r_t" >&5. echo $
68e0: 45 43 48 4f 5f 4e 20 22 63 68 65 63 6b 69 6e 67 ECHO_N "checking
68f0: 20 66 6f 72 20 69 6e 74 70 74 72 5f 74 2e 2e 2e for intptr_t...
6900: 20 24 45 43 48 4f 5f 43 22 20 3e 26 36 0a 20 69 $ECHO_C" >&6. i
6910: 66 20 74 65 73 74 20 22 24 7b 61 63 5f 63 76 5f f test "${ac_cv_
6920: 74 79 70 65 5f 69 6e 74 70 74 72 5f 74 2b 73 65 type_intptr_t+se
6930: 74 7d 22 20 3d 20 73 65 74 3b 20 74 68 65 6e 0a t}" = set; then.
6940: 20 20 20 65 63 68 6f 20 24 45 43 48 4f 5f 4e 20 echo $ECHO_N
6950: 22 28 63 61 63 68 65 64 29 20 24 45 43 48 4f 5f "(cached) $ECHO_
6960: 43 22 20 3e 26 36 0a 0a 49 6e 64 65 78 3a 20 77 C" >&6..Index: w
6970: 69 6e 2f 63 6f 6e 66 69 67 75 72 65 2e 69 6e 0a in/configure.in.
6980: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6990: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
69a0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
69b0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
69c0: 3d 3d 0a 2d 2d 2d 20 77 69 6e 2f 63 6f 6e 66 69 ==.--- win/confi
69d0: 67 75 72 65 2e 69 6e 0a 2b 2b 2b 20 77 69 6e 2f gure.in.+++ win/
69e0: 63 6f 6e 66 69 67 75 72 65 2e 69 6e 0a 40 40 20 configure.in.@@
69f0: 2d 31 33 39 2c 31 30 20 2b 31 33 39 2c 31 39 20 -139,10 +139,19
6a00: 40 40 0a 20 20 20 5d 29 0a 20 5d 2c 20 5b 0a 20 @@. ]). ], [.
6a10: 20 20 41 43 5f 53 55 42 53 54 28 5a 4c 49 42 5f AC_SUBST(ZLIB_
6a20: 4f 42 4a 53 2c 5b 5c 24 7b 5a 4c 49 42 5f 4f 42 OBJS,[\${ZLIB_OB
6a30: 4a 53 7d 5d 29 0a 20 5d 29 0a 20 41 43 5f 44 45 JS}]). ]). AC_DE
6a40: 46 49 4e 45 28 48 41 56 45 5f 5a 4c 49 42 2c 20 FINE(HAVE_ZLIB,
6a50: 31 2c 20 5b 49 73 20 74 68 65 72 65 20 61 6e 20 1, [Is there an
6a60: 69 6e 73 74 61 6c 6c 65 64 20 7a 6c 69 62 3f 5d installed zlib?]
6a70: 29 0a 2b 0a 2b 41 43 5f 41 52 47 5f 57 49 54 48 ).+.+AC_ARG_WITH
6a80: 28 74 69 63 6b 63 6f 75 6e 74 2c 0a 2b 20 20 20 (tickcount,.+
6a90: 20 41 43 5f 48 45 4c 50 5f 53 54 52 49 4e 47 28 AC_HELP_STRING(
6aa0: 5b 2d 2d 77 69 74 68 2d 74 69 63 6b 63 6f 75 6e [--with-tickcoun
6ab0: 74 5d 2c 0a 2b 09 5b 75 73 65 20 47 65 74 54 69 t],.+.[use GetTi
6ac0: 63 6b 43 6f 75 6e 74 20 66 6f 72 20 74 69 6d 65 ckCount for time
6ad0: 72 73 2c 20 74 75 72 6e 73 20 6f 66 66 20 54 49 rs, turns off TI
6ae0: 50 20 23 32 33 33 5d 29 2c 0a 2b 20 20 20 20 5b P #233]),.+ [
6af0: 74 63 6c 5f 6f 6b 3d 24 77 69 74 68 76 61 6c 5d tcl_ok=$withval]
6b00: 2c 20 5b 74 63 6c 5f 6f 6b 3d 6e 6f 5d 29 0a 2b , [tcl_ok=no]).+
6b10: 41 43 5f 4d 53 47 5f 52 45 53 55 4c 54 28 5b 24 AC_MSG_RESULT([$
6b20: 74 63 6c 5f 6f 6b 5d 29 0a 2b 69 66 20 74 65 73 tcl_ok]).+if tes
6b30: 74 20 24 74 63 6c 5f 6f 6b 20 3d 20 79 65 73 3b t $tcl_ok = yes;
6b40: 20 74 68 65 6e 0a 2b 20 20 20 20 41 43 5f 44 45 then.+ AC_DE
6b50: 46 49 4e 45 28 57 49 4e 33 32 5f 55 53 45 5f 54 FINE(WIN32_USE_T
6b60: 49 43 4b 43 4f 55 4e 54 2c 20 31 2c 20 5b 55 73 ICKCOUNT, 1, [Us
6b70: 65 20 47 65 74 54 69 63 6b 43 6f 75 6e 74 20 66 e GetTickCount f
6b80: 6f 72 20 74 69 6d 65 72 73 3f 5d 29 0a 2b 66 69 or timers?]).+fi
6b90: 0a 20 0a 20 41 43 5f 43 48 45 43 4b 5f 54 59 50 . . AC_CHECK_TYP
6ba0: 45 28 5b 69 6e 74 70 74 72 5f 74 5d 2c 20 5b 0a E([intptr_t], [.
6bb0: 20 20 20 20 20 41 43 5f 44 45 46 49 4e 45 28 5b AC_DEFINE([
6bc0: 48 41 56 45 5f 49 4e 54 50 54 52 5f 54 5d 2c 20 HAVE_INTPTR_T],
6bd0: 31 2c 20 5b 44 6f 20 77 65 20 68 61 76 65 20 74 1, [Do we have t
6be0: 68 65 20 69 6e 74 70 74 72 5f 74 20 74 79 70 65 he intptr_t type
6bf0: 3f 5d 29 5d 2c 20 5b 0a 20 20 20 20 20 41 43 5f ?])], [. AC_
6c00: 43 41 43 48 45 5f 43 48 45 43 4b 28 5b 66 6f 72 CACHE_CHECK([for
6c10: 20 70 6f 69 6e 74 65 72 2d 73 69 7a 65 20 73 69 pointer-size si
6c20: 67 6e 65 64 20 69 6e 74 65 67 65 72 20 74 79 70 gned integer typ
6c30: 65 5d 2c 20 74 63 6c 5f 63 76 5f 69 6e 74 70 74 e], tcl_cv_intpt
6c40: 72 5f 74 2c 20 5b 0a 20 20 20 20 20 66 6f 72 20 r_t, [. for
6c50: 74 63 6c 5f 63 76 5f 69 6e 74 70 74 72 5f 74 20 tcl_cv_intptr_t
6c60: 69 6e 20 22 69 6e 74 22 20 22 6c 6f 6e 67 22 20 in "int" "long"
6c70: 22 6c 6f 6e 67 20 6c 6f 6e 67 22 20 6e 6f 6e 65 "long long" none
6c80: 3b 20 64 6f 0a 0a 49 6e 64 65 78 3a 20 77 69 6e ; do..Index: win
6c90: 2f 74 63 6c 57 69 6e 49 6e 69 74 2e 63 0a 3d 3d /tclWinInit.c.==
6ca0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6cb0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6cc0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6cd0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
6ce0: 0a 2d 2d 2d 20 77 69 6e 2f 74 63 6c 57 69 6e 49 .--- win/tclWinI
6cf0: 6e 69 74 2e 63 0a 2b 2b 2b 20 77 69 6e 2f 74 63 nit.c.+++ win/tc
6d00: 6c 57 69 6e 49 6e 69 74 2e 63 0a 40 40 20 2d 31 lWinInit.c.@@ -1
6d10: 30 35 2c 31 30 20 2b 31 30 35 2c 31 36 20 40 40 05,10 +105,16 @@
6d20: 0a 20 73 74 61 74 69 63 20 50 72 6f 63 65 73 73 . static Process
6d30: 47 6c 6f 62 61 6c 56 61 6c 75 65 20 73 6f 75 72 GlobalValue sour
6d40: 63 65 4c 69 62 72 61 72 79 44 69 72 20 3d 0a 20 ceLibraryDir =.
6d50: 09 7b 30 2c 20 30 2c 20 4e 55 4c 4c 2c 20 4e 55 .{0, 0, NULL, NU
6d60: 4c 4c 2c 20 49 6e 69 74 69 61 6c 69 7a 65 53 6f LL, InitializeSo
6d70: 75 72 63 65 4c 69 62 72 61 72 79 44 69 72 2c 20 urceLibraryDir,
6d80: 4e 55 4c 4c 2c 20 4e 55 4c 4c 7d 3b 0a 20 0a 20 NULL, NULL};. .
6d90: 73 74 61 74 69 63 20 76 6f 69 64 09 09 41 70 70 static void..App
6da0: 65 6e 64 45 6e 76 69 72 6f 6e 6d 65 6e 74 28 54 endEnvironment(T
6db0: 63 6c 5f 4f 62 6a 20 2a 6c 69 73 74 50 74 72 2c cl_Obj *listPtr,
6dc0: 20 63 6f 6e 73 74 20 63 68 61 72 20 2a 6c 69 62 const char *lib
6dd0: 29 3b 0a 20 73 74 61 74 69 63 20 69 6e 74 09 09 );. static int..
6de0: 54 6f 55 74 66 28 63 6f 6e 73 74 20 57 43 48 41 ToUtf(const WCHA
6df0: 52 20 2a 77 53 72 63 2c 20 63 68 61 72 20 2a 64 R *wSrc, char *d
6e00: 73 74 29 3b 0a 2b 0a 2b 23 69 66 64 65 66 20 57 st);.+.+#ifdef W
6e10: 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 IN32_USE_TICKCOU
6e20: 4e 54 0a 2b 74 79 70 65 64 65 66 20 55 4c 4f 4e NT.+typedef ULON
6e30: 47 4c 4f 4e 47 20 57 49 4e 41 50 49 20 28 47 65 GLONG WINAPI (Ge
6e40: 74 54 69 63 6b 43 6f 75 6e 74 36 34 50 72 6f 63 tTickCount64Proc
6e50: 29 28 76 6f 69 64 29 3b 0a 2b 73 74 61 74 69 63 )(void);.+static
6e60: 20 47 65 74 54 69 63 6b 43 6f 75 6e 74 36 34 50 GetTickCount64P
6e70: 72 6f 63 20 2a 47 65 74 54 69 63 6b 43 6f 75 6e roc *GetTickCoun
6e80: 74 36 34 50 72 6f 63 50 74 72 20 3d 20 4e 55 4c t64ProcPtr = NUL
6e90: 4c 3b 0a 2b 23 65 6e 64 69 66 0a 2b 0a 20 0c 0a L;.+#endif.+. ..
6ea0: 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d /*. *---------
6eb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6ec0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6ed0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6ee0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
6ef0: 2d 2d 0a 20 20 2a 0a 20 20 2a 20 54 63 6c 70 49 --. *. * TclpI
6f00: 6e 69 74 50 6c 61 74 66 6f 72 6d 20 2d 2d 0a 40 nitPlatform --.@
6f10: 40 20 2d 31 33 30 2c 31 38 20 2b 31 33 36 2c 33 @ -130,18 +136,3
6f20: 34 20 40 40 0a 20 76 6f 69 64 0a 20 54 63 6c 70 4 @@. void. Tclp
6f30: 49 6e 69 74 50 6c 61 74 66 6f 72 6d 28 76 6f 69 InitPlatform(voi
6f40: 64 29 0a 20 7b 0a 20 20 20 20 20 57 53 41 44 41 d). {. WSADA
6f50: 54 41 20 77 73 61 44 61 74 61 3b 0a 20 20 20 20 TA wsaData;.
6f60: 20 57 4f 52 44 20 77 56 65 72 73 69 6f 6e 52 65 WORD wVersionRe
6f70: 71 75 65 73 74 65 64 20 3d 20 4d 41 4b 45 57 4f quested = MAKEWO
6f80: 52 44 28 32 2c 20 32 29 3b 0a 2b 23 69 66 64 65 RD(2, 2);.+#ifde
6f90: 66 20 57 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b f WIN32_USE_TICK
6fa0: 43 4f 55 4e 54 0a 2b 20 20 20 20 48 41 4e 44 4c COUNT.+ HANDL
6fb0: 45 20 68 61 6e 64 6c 65 3b 0a 2b 23 65 6e 64 69 E handle;.+#endi
6fc0: 66 0a 20 0a 20 20 20 20 20 74 63 6c 50 6c 61 74 f. . tclPlat
6fd0: 66 6f 72 6d 20 3d 20 54 43 4c 5f 50 4c 41 54 46 form = TCL_PLATF
6fe0: 4f 52 4d 5f 57 49 4e 44 4f 57 53 3b 0a 20 0a 20 ORM_WINDOWS;. .
6ff0: 20 20 20 20 2f 2a 0a 20 20 20 20 20 20 2a 20 49 /*. * I
7000: 6e 69 74 69 61 6c 69 7a 65 20 74 68 65 20 77 69 nitialize the wi
7010: 6e 73 6f 63 6b 20 6c 69 62 72 61 72 79 2e 20 4f nsock library. O
7020: 6e 20 57 69 6e 64 6f 77 73 20 58 50 20 61 6e 64 n Windows XP and
7030: 20 68 69 67 68 65 72 20 74 68 69 73 0a 20 20 20 higher this.
7040: 20 20 20 2a 20 63 61 6e 20 6e 65 76 65 72 20 66 * can never f
7050: 61 69 6c 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 20 ail.. */.
7060: 20 20 20 57 53 41 53 74 61 72 74 75 70 28 77 56 WSAStartup(wV
7070: 65 72 73 69 6f 6e 52 65 71 75 65 73 74 65 64 2c ersionRequested,
7080: 20 26 77 73 61 44 61 74 61 29 3b 0a 2b 0a 2b 23 &wsaData);.+.+#
7090: 69 66 64 65 66 20 57 49 4e 33 32 5f 55 53 45 5f ifdef WIN32_USE_
70a0: 54 49 43 4b 43 4f 55 4e 54 0a 2b 20 20 20 20 2f TICKCOUNT.+ /
70b0: 2a 0a 2b 20 20 20 20 20 2a 20 43 68 65 63 6b 20 *.+ * Check
70c0: 66 6f 72 20 61 76 61 69 6c 61 62 69 6c 69 74 79 for availability
70d0: 20 6f 66 20 74 68 65 20 47 65 74 54 69 63 6b 43 of the GetTickC
70e0: 6f 75 6e 74 36 34 28 29 20 41 50 49 2e 0a 2b 20 ount64() API..+
70f0: 20 20 20 20 2a 2f 0a 2b 0a 2b 20 20 20 20 68 61 */.+.+ ha
7100: 6e 64 6c 65 20 3d 20 4c 6f 61 64 4c 69 62 72 61 ndle = LoadLibra
7110: 72 79 57 28 4c 22 4b 45 52 4e 45 4c 33 32 22 29 ryW(L"KERNEL32")
7120: 3b 0a 2b 20 20 20 20 69 66 20 28 68 61 6e 64 6c ;.+ if (handl
7130: 65 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b 09 47 e != NULL) {.+.G
7140: 65 74 54 69 63 6b 43 6f 75 6e 74 36 34 50 72 6f etTickCount64Pro
7150: 63 50 74 72 20 3d 20 28 47 65 74 54 69 63 6b 43 cPtr = (GetTickC
7160: 6f 75 6e 74 36 34 50 72 6f 63 20 2a 29 0a 2b 09 ount64Proc *).+.
7170: 09 47 65 74 50 72 6f 63 41 64 64 72 65 73 73 28 .GetProcAddress(
7180: 68 61 6e 64 6c 65 2c 20 22 47 65 74 54 69 63 6b handle, "GetTick
7190: 43 6f 75 6e 74 36 34 22 29 3b 0a 2b 09 46 72 65 Count64");.+.Fre
71a0: 65 4c 69 62 72 61 72 79 28 68 61 6e 64 6c 65 29 eLibrary(handle)
71b0: 3b 0a 2b 20 20 20 20 7d 0a 2b 23 65 6e 64 69 66 ;.+ }.+#endif
71c0: 0a 20 0a 20 23 69 66 64 65 66 20 53 54 41 54 49 . . #ifdef STATI
71d0: 43 5f 42 55 49 4c 44 0a 20 20 20 20 20 2f 2a 0a C_BUILD. /*.
71e0: 20 20 20 20 20 20 2a 20 49 66 20 77 65 20 61 72 * If we ar
71f0: 65 20 69 6e 20 61 20 73 74 61 74 69 63 61 6c 6c e in a staticall
7200: 79 20 6c 69 6e 6b 65 64 20 65 78 65 63 75 74 61 y linked executa
7210: 62 6c 65 2c 20 74 68 65 6e 20 77 65 20 6e 65 65 ble, then we nee
7220: 64 20 74 6f 20 65 78 70 6c 69 63 69 74 6c 79 0a d to explicitly.
7230: 20 20 20 20 20 20 2a 20 69 6e 69 74 69 61 6c 69 * initiali
7240: 7a 65 20 74 68 65 20 57 69 6e 64 6f 77 73 20 66 ze the Windows f
7250: 75 6e 63 74 69 6f 6e 20 74 61 62 6c 65 73 20 68 unction tables h
7260: 65 72 65 20 73 69 6e 63 65 20 44 6c 6c 4d 61 69 ere since DllMai
7270: 6e 28 29 20 77 69 6c 6c 20 6e 6f 74 20 62 65 0a n() will not be.
7280: 40 40 20 2d 37 30 39 2c 31 33 20 2b 37 33 31 2c @@ -709,13 +731,
7290: 35 34 20 40 40 0a 20 20 20 64 6f 6e 65 3a 0a 20 54 @@. done:.
72a0: 20 20 20 20 54 63 6c 5f 44 53 74 72 69 6e 67 46 Tcl_DStringF
72b0: 72 65 65 28 26 65 6e 76 53 74 72 69 6e 67 29 3b ree(&envString);
72c0: 0a 20 20 20 20 20 63 6b 66 72 65 65 28 6e 61 6d . ckfree(nam
72d0: 65 55 70 70 65 72 29 3b 0a 20 20 20 20 20 72 65 eUpper);. re
72e0: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 20 7d 0a turn result;. }.
72f0: 2b 0c 0a 2b 2f 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d +..+/*.+ *------
7300: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7310: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7320: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7330: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7340: 0a 2b 20 2a 0a 2b 20 2a 20 54 63 6c 70 47 65 74 .+ *.+ * TclpGet
7350: 4d 6f 6e 6f 6e 6f 74 69 63 54 69 6d 65 20 2d 2d MononoticTime --
7360: 0a 2b 20 2a 0a 2b 20 2a 09 4c 69 6b 65 20 54 63 .+ *.+ *.Like Tc
7370: 6c 5f 47 65 74 54 69 6d 65 28 29 20 62 75 74 20 l_GetTime() but
7380: 72 65 74 75 72 6e 20 61 20 6d 6f 6e 6f 74 6f 6e return a monoton
7390: 69 63 20 63 6c 6f 63 6b 20 73 6f 75 72 63 65 2c ic clock source,
73a0: 0a 2b 20 2a 09 69 66 20 70 6f 73 73 69 62 6c 65 .+ *.if possible
73b0: 2e 20 4f 74 68 65 72 77 69 73 65 20 66 61 6c 6c . Otherwise fall
73c0: 20 62 61 63 6b 20 74 6f 20 72 65 61 6c 20 28 77 back to real (w
73d0: 61 6c 6c 20 63 6c 6f 63 6b 29 20 74 69 6d 65 2e all clock) time.
73e0: 0a 2b 20 2a 0a 2b 20 2a 20 52 65 73 75 6c 74 73 .+ *.+ * Results
73f0: 3a 0a 2b 20 2a 09 31 20 69 66 20 6d 6f 6e 6f 74 :.+ *.1 if monot
7400: 6f 6e 69 63 2c 20 30 20 6f 74 68 65 72 77 69 73 onic, 0 otherwis
7410: 65 2e 0a 2b 20 2a 0a 2b 20 2a 20 53 69 64 65 20 e..+ *.+ * Side
7420: 65 66 66 65 63 74 73 3a 0a 2b 20 2a 09 4e 6f 6e effects:.+ *.Non
7430: 65 2e 0a 2b 20 2a 0a 2b 20 2a 2d 2d 2d 2d 2d 2d e..+ *.+ *------
7440: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7460: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7470: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7480: 0a 2b 20 2a 2f 0a 2b 0a 2b 69 6e 74 0a 2b 54 63 .+ */.+.+int.+Tc
7490: 6c 70 47 65 74 4d 6f 6e 6f 74 6f 6e 69 63 54 69 lpGetMonotonicTi
74a0: 6d 65 28 54 63 6c 5f 54 69 6d 65 20 2a 74 69 6d me(Tcl_Time *tim
74b0: 65 50 74 72 29 0a 2b 7b 0a 2b 23 69 66 64 65 66 ePtr).+{.+#ifdef
74c0: 20 57 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b 43 WIN32_USE_TICKC
74d0: 4f 55 4e 54 0a 2b 20 20 20 20 69 66 20 28 47 65 OUNT.+ if (Ge
74e0: 74 54 69 63 6b 43 6f 75 6e 74 36 34 50 72 6f 63 tTickCount64Proc
74f0: 50 74 72 20 21 3d 20 4e 55 4c 4c 29 20 7b 0a 2b Ptr != NULL) {.+
7500: 09 55 4c 4f 4e 47 4c 4f 4e 47 20 6d 73 3b 0a 2b .ULONGLONG ms;.+
7510: 0a 2b 09 6d 73 20 3d 20 47 65 74 54 69 63 6b 43 .+.ms = GetTickC
7520: 6f 75 6e 74 36 34 50 72 6f 63 50 74 72 28 29 3b ount64ProcPtr();
7530: 0a 2b 09 74 69 6d 65 50 74 72 2d 3e 73 65 63 20 .+.timePtr->sec
7540: 3d 20 28 6c 6f 6e 67 29 28 6d 73 2f 31 30 30 30 = (long)(ms/1000
7550: 29 3b 0a 2b 20 20 20 20 20 20 20 20 74 69 6d 65 );.+ time
7560: 50 74 72 2d 3e 75 73 65 63 20 3d 20 28 28 6c 6f Ptr->usec = ((lo
7570: 6e 67 29 28 6d 73 25 31 30 30 30 29 29 2a 31 30 ng)(ms%1000))*10
7580: 30 30 3b 0a 2b 20 20 20 20 7d 20 65 6c 73 65 20 00;.+ } else
7590: 7b 0a 2b 09 6c 6f 6e 67 20 6d 73 3b 0a 2b 0a 2b {.+.long ms;.+.+
75a0: 09 6d 73 20 3d 20 47 65 74 54 69 63 6b 43 6f 75 .ms = GetTickCou
75b0: 6e 74 28 29 3b 0a 2b 09 74 69 6d 65 50 74 72 2d nt();.+.timePtr-
75c0: 3e 73 65 63 20 3d 20 6d 73 2f 31 30 30 30 3b 0a >sec = ms/1000;.
75d0: 2b 20 20 20 20 20 20 20 20 74 69 6d 65 50 74 72 + timePtr
75e0: 2d 3e 75 73 65 63 20 3d 20 28 6d 73 25 31 30 30 ->usec = (ms%100
75f0: 30 29 2a 31 30 30 30 3b 0a 2b 20 20 20 20 7d 0a 0)*1000;.+ }.
7600: 2b 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0a 2b + return 1;.+
7610: 23 65 6c 73 65 0a 2b 20 20 20 20 54 63 6c 5f 47 #else.+ Tcl_G
7620: 65 74 54 69 6d 65 28 74 69 6d 65 50 74 72 29 3b etTime(timePtr);
7630: 0a 2b 20 20 20 20 72 65 74 75 72 6e 20 30 3b 0a .+ return 0;.
7640: 2b 23 65 6e 64 69 66 0a 2b 7d 0a 20 0c 0a 20 2f +#endif.+}. .. /
7650: 2a 0a 20 20 2a 20 4c 6f 63 61 6c 20 56 61 72 69 *. * Local Vari
7660: 61 62 6c 65 73 3a 0a 20 20 2a 20 6d 6f 64 65 3a ables:. * mode:
7670: 20 63 0a 20 20 2a 20 63 2d 62 61 73 69 63 2d 6f c. * c-basic-o
7680: 66 66 73 65 74 3a 20 34 0a 20 20 2a 20 66 69 6c ffset: 4. * fil
7690: 6c 2d 63 6f 6c 75 6d 6e 3a 20 37 38 0a 20 20 2a l-column: 78. *
76a0: 20 45 6e 64 3a 0a 20 20 2a 2f 0a 0a 49 6e 64 65 End:. */..Inde
76b0: 78 3a 20 77 69 6e 2f 74 63 6c 57 69 6e 4e 6f 74 x: win/tclWinNot
76c0: 69 66 79 2e 63 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ify.c.==========
76d0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
76e0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
76f0: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
7700: 3d 3d 3d 3d 3d 3d 3d 3d 0a 2d 2d 2d 20 77 69 6e ========.--- win
7710: 2f 74 63 6c 57 69 6e 4e 6f 74 69 66 79 2e 63 0a /tclWinNotify.c.
7720: 2b 2b 2b 20 77 69 6e 2f 74 63 6c 57 69 6e 4e 6f +++ win/tclWinNo
7730: 74 69 66 79 2e 63 0a 40 40 20 2d 34 34 33 2c 31 tify.c.@@ -443,1
7740: 30 20 2b 34 34 33 2c 31 36 20 40 40 0a 20 09 2f 0 +443,16 @@. ./
7750: 2a 0a 20 09 20 2a 20 43 6f 6d 70 75 74 65 20 74 *. . * Compute t
7760: 68 65 20 74 69 6d 65 6f 75 74 20 69 6e 20 6d 69 he timeout in mi
7770: 6c 6c 69 73 65 63 6f 6e 64 73 2e 0a 20 09 20 2a lliseconds.. . *
7780: 2f 0a 20 0a 20 09 69 66 20 28 74 69 6d 65 50 74 /. . .if (timePt
7790: 72 29 20 7b 0a 2b 23 69 66 64 65 66 20 57 49 4e r) {.+#ifdef WIN
77a0: 33 32 5f 55 53 45 5f 54 49 43 4b 43 4f 55 4e 54 32_USE_TICKCOUNT
77b0: 0a 2b 09 20 20 20 20 74 69 6d 65 6f 75 74 20 3d .+. timeout =
77c0: 20 74 69 6d 65 50 74 72 2d 3e 73 65 63 20 2a 20 timePtr->sec *
77d0: 31 30 30 30 20 2b 20 74 69 6d 65 50 74 72 2d 3e 1000 + timePtr->
77e0: 75 73 65 63 20 2f 20 31 30 30 30 3b 0a 2b 09 20 usec / 1000;.+.
77f0: 20 20 20 69 66 20 28 74 69 6d 65 6f 75 74 20 3d if (timeout =
7800: 3d 20 49 4e 46 49 4e 49 54 45 29 20 7b 0a 2b 09 = INFINITE) {.+.
7810: 09 74 69 6d 65 6f 75 74 2d 2d 3b 0a 2b 09 20 20 .timeout--;.+.
7820: 20 20 7d 20 0a 2b 23 65 6c 73 65 0a 20 09 20 20 } .+#else. .
7830: 20 20 2f 2a 0a 20 09 20 20 20 20 20 2a 20 54 49 /*. . * TI
7840: 50 20 23 32 33 33 20 28 56 69 72 74 75 61 6c 69 P #233 (Virtuali
7850: 7a 65 64 20 54 69 6d 65 29 2e 20 43 6f 6e 76 65 zed Time). Conve
7860: 72 74 20 76 69 72 74 75 61 6c 20 64 6f 6d 61 69 rt virtual domai
7870: 6e 20 64 65 6c 61 79 20 74 6f 0a 20 09 20 20 20 n delay to. .
7880: 20 20 2a 20 72 65 61 6c 2d 74 69 6d 65 2e 0a 20 * real-time..
7890: 09 20 20 20 20 20 2a 2f 0a 20 0a 40 40 20 2d 34 . */. .@@ -4
78a0: 35 38 2c 31 30 20 2b 34 36 34 2c 31 31 20 40 40 58,10 +464,11 @@
78b0: 0a 20 09 20 20 20 20 69 66 20 28 6d 79 54 69 6d . . if (myTim
78c0: 65 2e 73 65 63 20 21 3d 20 30 20 7c 7c 20 6d 79 e.sec != 0 || my
78d0: 54 69 6d 65 2e 75 73 65 63 20 21 3d 20 30 29 20 Time.usec != 0)
78e0: 7b 0a 20 09 09 74 63 6c 53 63 61 6c 65 54 69 6d {. ..tclScaleTim
78f0: 65 50 72 6f 63 50 74 72 28 26 6d 79 54 69 6d 65 eProcPtr(&myTime
7900: 2c 20 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 44 , tclTimeClientD
7910: 61 74 61 29 3b 0a 20 09 20 20 20 20 7d 0a 20 0a ata);. . }. .
7920: 20 09 20 20 20 20 74 69 6d 65 6f 75 74 20 3d 20 . timeout =
7930: 6d 79 54 69 6d 65 2e 73 65 63 20 2a 20 31 30 30 myTime.sec * 100
7940: 30 20 2b 20 6d 79 54 69 6d 65 2e 75 73 65 63 20 0 + myTime.usec
7950: 2f 20 31 30 30 30 3b 0a 2b 23 65 6e 64 69 66 0a / 1000;.+#endif.
7960: 20 09 7d 20 65 6c 73 65 20 7b 0a 20 09 20 20 20 .} else {. .
7970: 20 74 69 6d 65 6f 75 74 20 3d 20 49 4e 46 49 4e timeout = INFIN
7980: 49 54 45 3b 0a 20 09 7d 0a 20 0a 20 09 2f 2a 0a ITE;. .}. . ./*.
7990: 40 40 20 2d 35 36 35 2c 31 31 20 2b 35 37 32 2c @@ -565,11 +572,
79a0: 31 31 20 40 40 0a 20 20 20 20 20 44 57 4f 52 44 11 @@. DWORD
79b0: 20 73 6c 65 65 70 54 69 6d 65 3b 09 09 2f 2a 20 sleepTime;../*
79c0: 54 69 6d 65 20 74 6f 20 73 6c 65 65 70 2c 20 72 Time to sleep, r
79d0: 65 61 6c 2d 74 69 6d 65 20 2a 2f 0a 20 0a 20 20 eal-time */. .
79e0: 20 20 20 76 64 65 6c 61 79 2e 73 65 63 20 20 3d vdelay.sec =
79f0: 20 6d 73 20 2f 20 31 30 30 30 3b 0a 20 20 20 20 ms / 1000;.
7a00: 20 76 64 65 6c 61 79 2e 75 73 65 63 20 3d 20 28 vdelay.usec = (
7a10: 6d 73 20 25 20 31 30 30 30 29 20 2a 20 31 30 30 ms % 1000) * 100
7a20: 30 3b 0a 20 0a 2d 20 20 20 20 54 63 6c 5f 47 65 0;. .- Tcl_Ge
7a30: 74 54 69 6d 65 28 26 6e 6f 77 29 3b 0a 2b 20 20 tTime(&now);.+
7a40: 20 20 54 63 6c 70 47 65 74 4d 6f 6e 6f 74 6f 6e TclpGetMonoton
7a50: 69 63 54 69 6d 65 28 26 6e 6f 77 29 3b 0a 20 20 icTime(&now);.
7a60: 20 20 20 64 65 73 69 72 65 64 2e 73 65 63 20 20 desired.sec
7a70: 3d 20 6e 6f 77 2e 73 65 63 20 20 2b 20 76 64 65 = now.sec + vde
7a80: 6c 61 79 2e 73 65 63 3b 0a 20 20 20 20 20 64 65 lay.sec;. de
7a90: 73 69 72 65 64 2e 75 73 65 63 20 3d 20 6e 6f 77 sired.usec = now
7aa0: 2e 75 73 65 63 20 2b 20 76 64 65 6c 61 79 2e 75 .usec + vdelay.u
7ab0: 73 65 63 3b 0a 20 20 20 20 20 69 66 20 28 64 65 sec;. if (de
7ac0: 73 69 72 65 64 2e 75 73 65 63 20 3e 20 31 30 30 sired.usec > 100
7ad0: 30 30 30 30 29 20 7b 0a 20 09 2b 2b 64 65 73 69 0000) {. .++desi
7ae0: 72 65 64 2e 73 65 63 3b 0a 20 09 64 65 73 69 72 red.sec;. .desir
7af0: 65 64 2e 75 73 65 63 20 2d 3d 20 31 30 30 30 30 ed.usec -= 10000
7b00: 30 30 3b 0a 40 40 20 2d 35 37 39 2c 31 34 20 2b 00;.@@ -579,14 +
7b10: 35 38 36 2c 31 37 20 40 40 0a 20 20 20 20 20 20 586,17 @@.
7b20: 2a 20 54 49 50 20 23 32 33 33 3a 20 53 63 61 6c * TIP #233: Scal
7b30: 65 20 64 65 6c 61 79 20 66 72 6f 6d 20 76 69 72 e delay from vir
7b40: 74 75 61 6c 20 74 6f 20 72 65 61 6c 2d 74 69 6d tual to real-tim
7b50: 65 2e 0a 20 20 20 20 20 20 2a 2f 0a 20 0a 20 20 e.. */. .
7b60: 20 20 20 74 63 6c 53 63 61 6c 65 54 69 6d 65 50 tclScaleTimeP
7b70: 72 6f 63 50 74 72 28 26 76 64 65 6c 61 79 2c 20 rocPtr(&vdelay,
7b80: 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 44 61 74 tclTimeClientDat
7b90: 61 29 3b 0a 20 20 20 20 20 73 6c 65 65 70 54 69 a);. sleepTi
7ba0: 6d 65 20 3d 20 76 64 65 6c 61 79 2e 73 65 63 20 me = vdelay.sec
7bb0: 2a 20 31 30 30 30 20 2b 20 76 64 65 6c 61 79 2e * 1000 + vdelay.
7bc0: 75 73 65 63 20 2f 20 31 30 30 30 3b 0a 2b 20 20 usec / 1000;.+
7bd0: 20 20 69 66 20 28 73 6c 65 65 70 54 69 6d 65 20 if (sleepTime
7be0: 3d 3d 20 49 4e 46 49 4e 49 54 45 29 20 7b 0a 2b == INFINITE) {.+
7bf0: 09 2d 2d 73 6c 65 65 70 54 69 6d 65 3b 0a 2b 20 .--sleepTime;.+
7c00: 20 20 20 7d 0a 20 0a 20 20 20 20 20 66 6f 72 20 }. . for
7c10: 28 3b 3b 29 20 7b 0a 20 09 53 6c 65 65 70 45 78 (;;) {. .SleepEx
7c20: 28 73 6c 65 65 70 54 69 6d 65 2c 20 54 52 55 45 (sleepTime, TRUE
7c30: 29 3b 0a 2d 09 54 63 6c 5f 47 65 74 54 69 6d 65 );.-.Tcl_GetTime
7c40: 28 26 6e 6f 77 29 3b 0a 2b 09 54 63 6c 70 47 65 (&now);.+.TclpGe
7c50: 74 4d 6f 6e 6f 74 6f 6e 69 63 54 69 6d 65 28 26 tMonotonicTime(&
7c60: 6e 6f 77 29 3b 0a 20 09 69 66 20 28 6e 6f 77 2e now);. .if (now.
7c70: 73 65 63 20 3e 20 64 65 73 69 72 65 64 2e 73 65 sec > desired.se
7c80: 63 29 20 7b 0a 20 09 20 20 20 20 62 72 65 61 6b c) {. . break
7c90: 3b 0a 20 09 7d 20 65 6c 73 65 20 69 66 20 28 28 ;. .} else if ((
7ca0: 6e 6f 77 2e 73 65 63 20 3d 3d 20 64 65 73 69 72 now.sec == desir
7cb0: 65 64 2e 73 65 63 29 20 26 26 20 28 6e 6f 77 2e ed.sec) && (now.
7cc0: 75 73 65 63 20 3e 3d 20 64 65 73 69 72 65 64 2e usec >= desired.
7cd0: 75 73 65 63 29 29 20 7b 0a 20 09 20 20 20 20 62 usec)) {. . b
7ce0: 72 65 61 6b 3b 0a 20 09 7d 0a 40 40 20 2d 35 39 reak;. .}.@@ -59
7cf0: 34 2c 31 30 20 2b 36 30 34 2c 31 33 20 40 40 0a 4,10 +604,13 @@.
7d00: 20 09 76 64 65 6c 61 79 2e 73 65 63 20 20 3d 20 .vdelay.sec =
7d10: 64 65 73 69 72 65 64 2e 73 65 63 20 20 2d 20 6e desired.sec - n
7d20: 6f 77 2e 73 65 63 3b 0a 20 09 76 64 65 6c 61 79 ow.sec;. .vdelay
7d30: 2e 75 73 65 63 20 3d 20 64 65 73 69 72 65 64 2e .usec = desired.
7d40: 75 73 65 63 20 2d 20 6e 6f 77 2e 75 73 65 63 3b usec - now.usec;
7d50: 0a 20 0a 20 09 74 63 6c 53 63 61 6c 65 54 69 6d . . .tclScaleTim
7d60: 65 50 72 6f 63 50 74 72 28 26 76 64 65 6c 61 79 eProcPtr(&vdelay
7d70: 2c 20 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 44 , tclTimeClientD
7d80: 61 74 61 29 3b 0a 20 09 73 6c 65 65 70 54 69 6d ata);. .sleepTim
7d90: 65 20 3d 20 76 64 65 6c 61 79 2e 73 65 63 20 2a e = vdelay.sec *
7da0: 20 31 30 30 30 20 2b 20 76 64 65 6c 61 79 2e 75 1000 + vdelay.u
7db0: 73 65 63 20 2f 20 31 30 30 30 3b 0a 2b 09 69 66 sec / 1000;.+.if
7dc0: 20 28 73 6c 65 65 70 54 69 6d 65 20 3d 3d 20 49 (sleepTime == I
7dd0: 4e 46 49 4e 49 54 45 29 20 7b 0a 2b 09 20 20 20 NFINITE) {.+.
7de0: 20 2d 2d 73 6c 65 65 70 54 69 6d 65 3b 0a 2b 09 --sleepTime;.+.
7df0: 7d 0a 20 20 20 20 20 7d 0a 20 7d 0a 20 0c 0a 20 }. }. }. ..
7e00: 2f 2a 0a 20 20 2a 20 4c 6f 63 61 6c 20 56 61 72 /*. * Local Var
7e10: 69 61 62 6c 65 73 3a 0a 0a 49 6e 64 65 78 3a 20 iables:..Index:
7e20: 77 69 6e 2f 74 63 6c 57 69 6e 54 69 6d 65 2e 63 win/tclWinTime.c
7e30: 0a 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d .===============
7e40: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
7e50: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
7e60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
7e70: 3d 3d 3d 0a 2d 2d 2d 20 77 69 6e 2f 74 63 6c 57 ===.--- win/tclW
7e80: 69 6e 54 69 6d 65 2e 63 0a 2b 2b 2b 20 77 69 6e inTime.c.+++ win
7e90: 2f 74 63 6c 57 69 6e 54 69 6d 65 2e 63 0a 40 40 /tclWinTime.c.@@
7ea0: 20 2d 31 31 31 36 2c 31 33 20 2b 31 31 31 36 2c -1116,13 +1116,
7eb0: 31 35 20 40 40 0a 20 54 63 6c 5f 53 65 74 54 69 15 @@. Tcl_SetTi
7ec0: 6d 65 50 72 6f 63 28 0a 20 20 20 20 20 54 63 6c meProc(. Tcl
7ed0: 5f 47 65 74 54 69 6d 65 50 72 6f 63 20 2a 67 65 _GetTimeProc *ge
7ee0: 74 50 72 6f 63 2c 0a 20 20 20 20 20 54 63 6c 5f tProc,. Tcl_
7ef0: 53 63 61 6c 65 54 69 6d 65 50 72 6f 63 20 2a 73 ScaleTimeProc *s
7f00: 63 61 6c 65 50 72 6f 63 2c 0a 20 20 20 20 20 43 caleProc,. C
7f10: 6c 69 65 6e 74 44 61 74 61 20 63 6c 69 65 6e 74 lientData client
7f20: 44 61 74 61 29 0a 20 7b 0a 2b 23 69 66 6e 64 65 Data). {.+#ifnde
7f30: 66 20 57 49 4e 33 32 5f 55 53 45 5f 54 49 43 4b f WIN32_USE_TICK
7f40: 43 4f 55 4e 54 0a 20 20 20 20 20 74 63 6c 47 65 COUNT. tclGe
7f50: 74 54 69 6d 65 50 72 6f 63 50 74 72 20 3d 20 67 tTimeProcPtr = g
7f60: 65 74 50 72 6f 63 3b 0a 20 20 20 20 20 74 63 6c etProc;. tcl
7f70: 53 63 61 6c 65 54 69 6d 65 50 72 6f 63 50 74 72 ScaleTimeProcPtr
7f80: 20 3d 20 73 63 61 6c 65 50 72 6f 63 3b 0a 20 20 = scaleProc;.
7f90: 20 20 20 74 63 6c 54 69 6d 65 43 6c 69 65 6e 74 tclTimeClient
7fa0: 44 61 74 61 20 3d 20 63 6c 69 65 6e 74 44 61 74 Data = clientDat
7fb0: 61 3b 0a 2b 23 65 6e 64 69 66 0a 20 7d 0a 20 0c a;.+#endif. }. .
7fc0: 0a 20 2f 2a 0a 20 20 2a 2d 2d 2d 2d 2d 2d 2d 2d . /*. *--------
7fd0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
7ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------------
8000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 --------------.
8010: 20 2a 0a 0a *..