Thanks Mark, working quite nicely now! For completeness, below are the latest results from Solaris 10/x86_64 also using clang (libkqueue r469, libpthread_workqueue r113, libdispatch r197 - current ’trunk’) - all tests succeeded. Cheers, Joakim SunOS ply 5.10 Generic_144489-06 i86pc i386 i86pc ================================================== [TEST] Dispatch (Public) API [PID] 16510 ================================================== Actual: 412970 Expected: 412970 [PASS] dispatch_get_main_queue PASS: dispatch_api ================================================== [TEST] Dispatch C99 [PID] 16526 ================================================== Actual: 412970 Expected: 412970 [PASS] dispatch_get_main_queue PASS: dispatch_c99 ================================================== [TEST] Dispatch Cascade [PID] 16542 ================================================== maxcount = 4115 * * * * * * * * * * * * * * * * * *** * * ** *** ** * ** **** ** * * PASS: dispatch_cascade ================================================== [TEST] Dispatch Debug [PID] 16558 ================================================== PASS: dispatch_debug ================================================== [TEST] Dispatch Priority [PID] 16574 ================================================== LOW: 15 ********** DEFAULT: 49 ******************************* HIGH: 128 ******************************************************************************** Actual: 192 Expected: 192 [PASS] blocks completed Actual: 15 Expected: <128 [PASS] high priority precedence PASS: dispatch_priority ================================================== [TEST] Dispatch Priority (Set Target Queue) [PID] 16590 ================================================== Actual: 415a90 Expected: 415a90 [PASS] q[i] Actual: 418590 Expected: 418590 [PASS] q[i] Actual: 418640 Expected: 418640 [PASS] q[i] LOW: 46 ***************************** DEFAULT: 62 *************************************** HIGH: 84 ***************************************************** Actual: 192 Expected: 192 [PASS] blocks completed Actual: 46 Expected: <84 [PASS] high priority precedence PASS: dispatch_priority2 ================================================== [TEST] Dispatch Starfish [PID] 16606 ================================================== lap: 10 count: 1000 delta: 1041826041 ns math: 520.392628 ns / lap Actual: 520 Expected: <1000 [PASS] Latency lap: 9 count: 1000 delta: 1092185393 ns math: 545.547149 ns / lap Actual: 545 Expected: <1000 [PASS] Latency lap: 8 count: 1000 delta: 1084189055 ns math: 541.552975 ns / lap Actual: 541 Expected: <1000 [PASS] Latency lap: 7 count: 1000 delta: 1115418469 ns math: 557.152082 ns / lap Actual: 557 Expected: <1000 [PASS] Latency lap: 6 count: 1000 delta: 1042504620 ns math: 520.731578 ns / lap Actual: 520 Expected: <1000 [PASS] Latency lap: 5 count: 1000 delta: 1104164173 ns math: 551.530556 ns / lap Actual: 551 Expected: <1000 [PASS] Latency lap: 4 count: 1000 delta: 1035682573 ns math: 517.323963 ns / lap Actual: 517 Expected: <1000 [PASS] Latency lap: 3 count: 1000 delta: 1013383389 ns math: 506.185509 ns / lap Actual: 506 Expected: <1000 [PASS] Latency lap: 2 count: 1000 delta: 1105151225 ns math: 552.023589 ns / lap Actual: 552 Expected: <1000 [PASS] Latency lap: 1 count: 1000 delta: 1095489547 ns math: 547.197576 ns / lap Actual: 547 Expected: <1000 [PASS] Latency PASS: dispatch_starfish ================================================== [TEST] Dispatch Queue Finalizer [PID] 16668 ================================================== Actual: 415de0 Expected: 415de0 [PASS] dispatch_queue_new Actual: 62595c29f2bffb0c Expected: 62595c29f2bffb0c [PASS] finalizer ran PASS: queue_finalizer ================================================== [TEST] Dispatch After [PID] 16684 ================================================== Actual: 0 Expected: <500065550 [PASS] can't finish faster than 5.5s Actual: 0 Expected: <499936177 [PASS] must finish faster than 6.5s Actual: 0 Expected: <500047574 [PASS] can't finish faster than 1.5s Actual: 0 Expected: <499953651 [PASS] must finish faster than 2.5s Actual: 0 Expected: <46552 [PASS] can't finish faster than 0s Actual: 0 Expected: <499954541 [PASS] must finish faster than .5s PASS: dispatch_after ================================================== [TEST] Dispatch Apply [PID] 16722 ================================================== Actual: fffffd7fff290550 Expected: fffffd7fff290550 [PASS] dispatch_get_concurrent_queue Actual: 32 Expected: 32 [PASS] count PASS: dispatch_apply ================================================== [TEST] Timer drift test [PID] 16738 ================================================== Actual: 415f40 Expected: 415f40 [PASS] DISPATCH_SOURCE_TYPE_TIMER 1: jitter 0.000000, drift 0.000000 2: jitter 0.000002, drift 0.000002 3: jitter 0.000005, drift 0.000003 4: jitter 0.000211, drift 0.000206 5: jitter -0.000004, drift -0.000215 6: jitter 0.000000, drift 0.000004 7: jitter 0.000003, drift 0.000003 8: jitter 0.000002, drift -0.000001 9: jitter 0.000007, drift 0.000005 10: jitter 0.000202, drift 0.000195 11: jitter 0.000002, drift -0.000200 12: jitter 0.000209, drift 0.000207 13: jitter -0.000007, drift -0.000216 14: jitter 0.000007, drift 0.000014 15: jitter 0.000003, drift -0.000004 16: jitter -0.000001, drift -0.000004 17: jitter 0.000008, drift 0.000009 18: jitter -0.000015, drift -0.000023 19: jitter -0.000030, drift -0.000015 20: jitter -0.000005, drift 0.000025 21: jitter 0.000000, drift 0.000005 22: jitter -0.000007, drift -0.000007 23: jitter -0.000009, drift -0.000002 24: jitter -0.000001, drift 0.000008 25: jitter -0.000002, drift -0.000001 26: jitter -0.000002, drift -0.000000 27: jitter 0.000003, drift 0.000005 28: jitter 0.000000, drift -0.000003 29: jitter 0.000004, drift 0.000004 30: jitter 0.000002, drift -0.000002 31: jitter 0.000006, drift 0.000004 32: jitter 0.000008, drift 0.000002 33: jitter 0.000008, drift 0.000000 34: jitter 0.000008, drift 0.000000 35: jitter 0.000002, drift -0.000006 36: jitter 0.000001, drift -0.000001 37: jitter 0.000006, drift 0.000005 38: jitter 0.000009, drift 0.000003 39: jitter 0.000008, drift -0.000001 40: jitter 0.000002, drift -0.000006 41: jitter 0.000008, drift 0.000006 42: jitter 0.000009, drift 0.000001 43: jitter 0.000009, drift 0.000000 44: jitter 0.000007, drift -0.000002 45: jitter -0.000003, drift -0.000010 46: jitter -0.000002, drift 0.000001 47: jitter 0.000003, drift 0.000005 48: jitter 0.000004, drift 0.000001 49: jitter 0.000005, drift 0.000001 50: jitter -0.000002, drift -0.000007 51: jitter 0.000006, drift 0.000008 52: jitter 0.000005, drift -0.000001 53: jitter 0.000203, drift 0.000198 54: jitter 0.000003, drift -0.000200 55: jitter 0.000003, drift 0.000000 56: jitter 0.000003, drift -0.000000 57: jitter 0.000005, drift 0.000002 58: jitter 0.000206, drift 0.000201 59: jitter 0.000005, drift -0.000201 60: jitter -0.000003, drift -0.000008 61: jitter 0.000004, drift 0.000007 62: jitter 0.000208, drift 0.000204 63: jitter 0.000008, drift -0.000200 64: jitter 0.000007, drift -0.000001 65: jitter 0.000007, drift 0.000000 66: jitter 0.000002, drift -0.000005 67: jitter 0.000007, drift 0.000005 68: jitter 0.000208, drift 0.000201 69: jitter -0.000015, drift -0.000223 70: jitter 0.000002, drift 0.000017 71: jitter 0.000209, drift 0.000207 72: jitter 0.000011, drift -0.000198 73: jitter 0.000007, drift -0.000004 74: jitter 0.000203, drift 0.000196 75: jitter 0.000003, drift -0.000200 76: jitter -0.000017, drift -0.000020 77: jitter -0.000001, drift 0.000016 78: jitter -0.000005, drift -0.000004 79: jitter 0.000008, drift 0.000013 80: jitter 0.000199, drift 0.000191 81: jitter 0.000004, drift -0.000195 82: jitter 0.000007, drift 0.000003 83: jitter 0.000008, drift 0.000001 84: jitter 0.000005, drift -0.000003 85: jitter 0.000003, drift -0.000002 86: jitter 0.000000, drift -0.000003 87: jitter 0.000003, drift 0.000003 88: jitter 0.000002, drift -0.000001 89: jitter 0.000006, drift 0.000004 90: jitter 0.000000, drift -0.000006 91: jitter 0.000006, drift 0.000006 92: jitter 0.000003, drift -0.000003 93: jitter 0.000007, drift 0.000004 94: jitter 0.000007, drift 0.000000 95: jitter 0.000004, drift -0.000003 96: jitter 0.000003, drift -0.000001 97: jitter 0.000014, drift 0.000011 98: jitter 0.000007, drift -0.000007 99: jitter 0.000009, drift 0.000002 100: jitter 0.000004, drift -0.000005 101: jitter 0.000206, drift 0.000202 102: jitter 0.000009, drift -0.000197 103: jitter 0.000010, drift 0.000001 104: jitter 0.000008, drift -0.000002 105: jitter 0.000006, drift -0.000002 106: jitter 0.000004, drift -0.000002 107: jitter 0.000007, drift 0.000003 108: jitter -0.000009, drift -0.000016 109: jitter 0.000001, drift 0.000010 110: jitter -0.000024, drift -0.000025 111: jitter 0.000004, drift 0.000028 112: jitter 0.000002, drift -0.000002 113: jitter 0.000002, drift 0.000000 114: jitter -0.000001, drift -0.000003 115: jitter 0.000004, drift 0.000005 116: jitter 0.000005, drift 0.000001 117: jitter 0.000002, drift -0.000003 118: jitter 0.000006, drift 0.000004 119: jitter -0.000012, drift -0.000018 120: jitter 0.000000, drift 0.000012 121: jitter -0.000001, drift -0.000001 122: jitter -0.000000, drift 0.000001 123: jitter 0.000006, drift 0.000006 124: jitter 0.000202, drift 0.000196 125: jitter 0.000003, drift -0.000199 126: jitter 0.000005, drift 0.000002 127: jitter -0.000000, drift -0.000005 128: jitter 0.000008, drift 0.000008 129: jitter 0.000007, drift -0.000001 130: jitter 0.000200, drift 0.000193 131: jitter 0.000007, drift -0.000193 132: jitter 0.000008, drift 0.000001 133: jitter 0.000008, drift 0.000000 134: jitter 0.000005, drift -0.000003 135: jitter 0.000007, drift 0.000002 136: jitter 0.000007, drift 0.000000 137: jitter 0.000006, drift -0.000001 138: jitter 0.000006, drift 0.000000 139: jitter 0.000009, drift 0.000003 140: jitter 0.000002, drift -0.000007 141: jitter -0.000003, drift -0.000005 142: jitter 0.000005, drift 0.000008 143: jitter 0.000006, drift 0.000001 144: jitter 0.000004, drift -0.000002 145: jitter 0.000002, drift -0.000002 146: jitter 0.000005, drift 0.000003 147: jitter 0.000003, drift -0.000002 148: jitter 0.000005, drift 0.000002 149: jitter 0.000006, drift 0.000001 150: jitter -0.000002, drift -0.000008 151: jitter 0.000005, drift 0.000007 152: jitter 0.000002, drift -0.000003 153: jitter 0.000005, drift 0.000003 154: jitter 0.000003, drift -0.000002 155: jitter -0.000004, drift -0.000007 156: jitter 0.000005, drift 0.000009 157: jitter 0.000002, drift -0.000003 158: jitter 0.000007, drift 0.000005 159: jitter 0.000005, drift -0.000002 160: jitter 0.000002, drift -0.000003 161: jitter 0.000006, drift 0.000004 162: jitter 0.000009, drift 0.000003 163: jitter 0.000009, drift 0.000000 164: jitter 0.000007, drift -0.000002 165: jitter 0.000004, drift -0.000003 166: jitter 0.000007, drift 0.000003 167: jitter 0.000008, drift 0.000001 168: jitter 0.000009, drift 0.000001 169: jitter -0.000007, drift -0.000016 170: jitter 0.000008, drift 0.000015 171: jitter 0.000008, drift -0.000000 172: jitter 0.000010, drift 0.000002 173: jitter -0.000001, drift -0.000011 174: jitter 0.000128, drift 0.000129 175: jitter -0.000005, drift -0.000133 176: jitter -0.000003, drift 0.000002 177: jitter -0.000000, drift 0.000003 178: jitter 0.000004, drift 0.000004 179: jitter 0.000005, drift 0.000001 180: jitter -0.000001, drift -0.000006 181: jitter 0.000005, drift 0.000006 182: jitter -0.000013, drift -0.000018 183: jitter -0.000007, drift 0.000006 184: jitter -0.000001, drift 0.000006 185: jitter -0.000005, drift -0.000004 186: jitter -0.000007, drift -0.000002 187: jitter -0.000003, drift 0.000004 188: jitter 0.000005, drift 0.000008 189: jitter 0.000003, drift -0.000002 190: jitter 0.000001, drift -0.000002 191: jitter 0.000007, drift 0.000006 192: jitter 0.000009, drift 0.000002 193: jitter 0.000009, drift 0.000000 194: jitter 0.000009, drift -0.000000 195: jitter 0.000007, drift -0.000002 196: jitter 0.000008, drift 0.000001 197: jitter 0.000006, drift -0.000002 198: jitter 0.000008, drift 0.000002 199: jitter 0.000009, drift 0.000001 200: jitter 0.000005, drift -0.000004 201: jitter 0.000009, drift 0.000004 202: jitter 0.000010, drift 0.000001 203: jitter 0.000011, drift 0.000001 204: jitter -0.000010, drift -0.000021 205: jitter -0.000012, drift -0.000002 206: jitter -0.000024, drift -0.000012 207: jitter -0.000006, drift 0.000018 208: jitter -0.000004, drift 0.000002 209: jitter 0.000003, drift 0.000007 210: jitter 0.000139, drift 0.000136 211: jitter 0.000006, drift -0.000133 212: jitter 0.000006, drift -0.000000 213: jitter 0.000003, drift -0.000003 214: jitter 0.000006, drift 0.000003 215: jitter 0.000202, drift 0.000196 216: jitter 0.000002, drift -0.000200 217: jitter 0.000001, drift -0.000001 218: jitter 0.000001, drift 0.000000 219: jitter -0.000010, drift -0.000011 220: jitter -0.000010, drift 0.000000 221: jitter 0.000003, drift 0.000013 222: jitter 0.000010, drift 0.000007 223: jitter 0.000009, drift -0.000001 224: jitter 0.000007, drift -0.000002 225: jitter 0.000006, drift -0.000001 226: jitter 0.000007, drift 0.000001 227: jitter 0.000006, drift -0.000001 228: jitter 0.000008, drift 0.000002 229: jitter 0.000009, drift 0.000001 230: jitter 0.000007, drift -0.000002 231: jitter 0.000008, drift 0.000001 232: jitter 0.000010, drift 0.000002 233: jitter 0.000010, drift 0.000000 234: jitter 0.000009, drift -0.000001 235: jitter 0.000007, drift -0.000002 236: jitter 0.000008, drift 0.000001 237: jitter -0.000001, drift -0.000009 238: jitter -0.000009, drift -0.000008 239: jitter -0.000008, drift 0.000001 240: jitter -0.000009, drift -0.000001 241: jitter 0.000002, drift 0.000011 242: jitter -0.000007, drift -0.000009 243: jitter 0.000006, drift 0.000013 244: jitter 0.000003, drift -0.000003 245: jitter -0.000003, drift -0.000006 246: jitter 0.000000, drift 0.000003 247: jitter 0.000203, drift 0.000203 248: jitter -0.000004, drift -0.000207 249: jitter 0.000005, drift 0.000009 250: jitter -0.000013, drift -0.000018 Actual: 0.000016 Expected: <0.000100 [PASS] average jitter Actual: 0.000000 Expected: <0.000100 [PASS] average drift PASS: dispatch_drift ================================================== [TEST] Dispatch Group [PID] 16805 ================================================== Actual: 4169e0 Expected: 4169e0 [PASS] dispatch_group_async Actual: 4169e0 Expected: 4169e0 [PASS] dispatch_group_async sleeping... sleeping... sleeping... Actual: 0 Expected: 0 [PASS] dispatch_group_wait done. done. done. Actual: 0 Expected: 0 [PASS] dispatch_group_wait Actual: 4169e0 Expected: 4169e0 [PASS] dispatch_group_async Actual: 413510 Expected: 413510 [PASS] Notification Received PASS: dispatch_group ================================================== [TEST] Dispatch Ping Pong [PID] 16822 ================================================== Actual: 415690 Expected: 415690 [PASS] dispatch_queue_create(ping) Actual: 415740 Expected: 415740 [PASS] dispatch_queue_create(pong) Actual: 4157f0 Expected: 4157f0 [PASS] dispatch_group_create Actual: 1000000 Expected: 1000000 [PASS] count PASS: dispatch_pingpong ================================================== [TEST] Dispatch Source Read [PID] 16838 ================================================== Actual: 490310 Expected: 490310 [PASS] dispatch_get_main_queue Actual: 492d10 Expected: 492d10 [PASS] DISPATCH_SOURCE_TYPE_READ bytes available: 2486813 bytes read: 512000 bytes available: 1974813 bytes read: 512000 bytes available: 1462813 bytes read: 512000 bytes available: 950813 bytes read: 512000 bytes available: 438813 bytes read: 438813 Actual: 0 Expected: 0 [PASS] EOF Actual: 2486813 Expected: 2486813 [PASS] Bytes read Actual: 0 Expected: 0 [PASS] close PASS: dispatch_read ================================================== [TEST] Dispatch Reader/Writer Queues [PID] 16854 ================================================== PASS: dispatch_readsync ================================================== [TEST] Dispatch Semaphore [PID] 16870 ================================================== Actual: 10000 Expected: 10000 [PASS] count PASS: dispatch_sema ================================================== [TEST] Dispatch Source Timer, bit 31 [PID] 16886 ================================================== Actual: 413170 Expected: 413170 [PASS] dispatch_get_main_queue Actual: 415b60 Expected: 415b60 [PASS] DISPATCH_SOURCE_TYPE_TIMER Actual: 2 Expected: <4 [PASS] elapsed time < 4s Actual: 1 Expected: <2 [PASS] elapsed time > 2s PASS: dispatch_timer_bit31 ================================================== [TEST] Dispatch Source Timer, bit 63 [PID] 16902 ================================================== 0 PASS: dispatch_timer_bit63 ================================================== [TEST] Dispatch C++ [PID] 16918 ================================================== Actual: 4128f0 Expected: 4128f0 [PASS] dispatch_get_main_queue PASS: dispatch_plusplus =================== All 19 tests passed =================== gmake[2]: Leaving directory `/home/jocke/gcd/cb/2011-04-11_11-22-57/libdispatch/trunk/testing' gmake[1]: Leaving directory `/home/jocke/gcd/cb/2011-04-11_11-22-57/libdispatch/trunk/testing' gmake[1]: Entering directory `/home/jocke/gcd/cb/2011-04-11_11-22-57/libdispatch/trunk' gmake[1]: Nothing to be done for `check-am'. gmake[1]: Leaving directory `/home/jocke/gcd/cb/2011-04-11_11-22-57/libdispatch/trunk' -bash-3.00$