noderb 0.0.4 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (361) hide show
  1. data/ext/noderb_extension/libuv/AUTHORS +11 -1
  2. data/ext/noderb_extension/libuv/LICENSE +0 -8
  3. data/ext/noderb_extension/libuv/Makefile +5 -5
  4. data/ext/noderb_extension/libuv/README +11 -6
  5. data/ext/noderb_extension/libuv/common.gypi +158 -7
  6. data/ext/noderb_extension/libuv/config-unix.mk +34 -26
  7. data/ext/noderb_extension/libuv/gyp_uv +22 -4
  8. data/ext/noderb_extension/libuv/include/{eio.h → uv-private/eio.h} +2 -2
  9. data/ext/noderb_extension/libuv/include/{uv-unix.h → uv-private/uv-unix.h} +40 -0
  10. data/ext/noderb_extension/libuv/include/{uv-win.h → uv-private/uv-win.h} +96 -14
  11. data/ext/noderb_extension/libuv/include/uv.h +508 -83
  12. data/ext/noderb_extension/libuv/src/unix/cares.c +185 -0
  13. data/ext/noderb_extension/libuv/src/unix/core.c +828 -0
  14. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_darwin.h +4 -0
  15. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_linux.h +5 -15
  16. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.c +23 -2
  17. data/ext/noderb_extension/libuv/src/unix/error.c +102 -0
  18. data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_linux.h +26 -15
  19. data/ext/noderb_extension/libuv/src/unix/fs.c +562 -0
  20. data/ext/noderb_extension/libuv/src/unix/internal.h +75 -0
  21. data/ext/noderb_extension/libuv/src/unix/pipe.c +282 -0
  22. data/ext/noderb_extension/libuv/src/unix/process.c +287 -0
  23. data/ext/noderb_extension/libuv/src/unix/stream.c +727 -0
  24. data/ext/noderb_extension/libuv/src/unix/tcp.c +226 -0
  25. data/ext/noderb_extension/libuv/src/unix/udp.c +524 -0
  26. data/ext/noderb_extension/libuv/src/{uv-eio.c → unix/uv-eio.c} +48 -27
  27. data/ext/noderb_extension/libuv/src/{uv-eio.h → unix/uv-eio.h} +1 -1
  28. data/ext/noderb_extension/libuv/src/uv-common.c +24 -14
  29. data/ext/noderb_extension/libuv/src/uv-common.h +12 -7
  30. data/ext/noderb_extension/libuv/src/win/async.c +14 -16
  31. data/ext/noderb_extension/libuv/src/win/cares.c +64 -79
  32. data/ext/noderb_extension/libuv/src/win/core.c +105 -53
  33. data/ext/noderb_extension/libuv/src/win/error.c +23 -13
  34. data/ext/noderb_extension/libuv/src/win/fs.c +807 -0
  35. data/ext/noderb_extension/libuv/src/win/getaddrinfo.c +61 -41
  36. data/ext/noderb_extension/libuv/src/win/handle.c +56 -30
  37. data/ext/noderb_extension/libuv/src/win/internal.h +134 -95
  38. data/ext/noderb_extension/libuv/src/win/loop-watcher.c +21 -18
  39. data/ext/noderb_extension/libuv/src/win/pipe.c +313 -158
  40. data/ext/noderb_extension/libuv/src/win/process.c +117 -131
  41. data/ext/noderb_extension/libuv/src/win/req.c +55 -31
  42. data/ext/noderb_extension/libuv/src/win/stdio.c +5 -5
  43. data/ext/noderb_extension/libuv/src/win/stream.c +19 -14
  44. data/ext/noderb_extension/libuv/src/win/tcp.c +278 -336
  45. data/ext/noderb_extension/libuv/src/win/threadpool.c +73 -0
  46. data/ext/noderb_extension/libuv/src/win/timer.c +44 -37
  47. data/ext/noderb_extension/libuv/src/win/udp.c +592 -0
  48. data/ext/noderb_extension/libuv/src/win/util.c +20 -6
  49. data/ext/noderb_extension/libuv/src/win/winapi.c +23 -6
  50. data/ext/noderb_extension/libuv/src/win/winapi.h +4206 -0
  51. data/ext/noderb_extension/libuv/src/win/winsock.c +270 -0
  52. data/ext/noderb_extension/libuv/src/win/winsock.h +134 -0
  53. data/ext/noderb_extension/libuv/test/benchmark-ares.c +10 -6
  54. data/ext/noderb_extension/libuv/test/benchmark-getaddrinfo.c +10 -7
  55. data/ext/noderb_extension/libuv/test/benchmark-list.h +21 -0
  56. data/ext/noderb_extension/libuv/test/benchmark-ping-pongs.c +11 -7
  57. data/ext/noderb_extension/libuv/test/benchmark-pound.c +147 -58
  58. data/ext/noderb_extension/libuv/test/benchmark-pump.c +29 -23
  59. data/ext/noderb_extension/libuv/test/benchmark-spawn.c +13 -10
  60. data/ext/noderb_extension/libuv/test/benchmark-udp-packet-storm.c +250 -0
  61. data/ext/noderb_extension/libuv/test/dns-server.c +11 -6
  62. data/ext/noderb_extension/libuv/test/echo-server.c +30 -22
  63. data/ext/noderb_extension/libuv/test/test-async.c +3 -3
  64. data/ext/noderb_extension/libuv/test/test-callback-stack.c +6 -6
  65. data/ext/noderb_extension/libuv/test/test-connection-fail.c +6 -5
  66. data/ext/noderb_extension/libuv/test/test-delayed-accept.c +13 -13
  67. data/ext/noderb_extension/libuv/test/test-fs.c +715 -0
  68. data/ext/noderb_extension/libuv/test/test-getaddrinfo.c +11 -8
  69. data/ext/noderb_extension/libuv/test/test-gethostbyname.c +8 -9
  70. data/ext/noderb_extension/libuv/test/test-getsockname.c +142 -16
  71. data/ext/noderb_extension/libuv/test/test-idle.c +4 -3
  72. data/ext/noderb_extension/libuv/test/test-list.h +29 -2
  73. data/ext/noderb_extension/libuv/test/test-loop-handles.c +9 -8
  74. data/ext/noderb_extension/libuv/test/test-ping-pong.c +9 -9
  75. data/ext/noderb_extension/libuv/test/test-pipe-bind-error.c +18 -14
  76. data/ext/noderb_extension/libuv/test/test-ref.c +17 -16
  77. data/ext/noderb_extension/libuv/test/test-shutdown-eof.c +5 -5
  78. data/ext/noderb_extension/libuv/test/test-spawn.c +17 -17
  79. data/ext/noderb_extension/libuv/test/test-tcp-bind-error.c +24 -18
  80. data/ext/noderb_extension/libuv/test/test-tcp-bind6-error.c +19 -14
  81. data/ext/noderb_extension/libuv/test/test-tcp-writealot.c +6 -5
  82. data/ext/noderb_extension/libuv/test/test-threadpool.c +59 -0
  83. data/ext/noderb_extension/libuv/test/test-timer-again.c +15 -12
  84. data/ext/noderb_extension/libuv/test/test-timer.c +8 -8
  85. data/ext/noderb_extension/libuv/test/test-udp-dgram-too-big.c +88 -0
  86. data/ext/noderb_extension/libuv/test/test-udp-ipv6.c +158 -0
  87. data/ext/noderb_extension/libuv/test/test-udp-send-and-recv.c +210 -0
  88. data/ext/noderb_extension/libuv/{all.gyp → uv.gyp} +75 -77
  89. data/ext/noderb_extension/libuv/vcbuild.bat +93 -0
  90. data/ext/noderb_extension/noderb.c +13 -0
  91. data/ext/noderb_extension/noderb_common.h +2 -1
  92. data/ext/noderb_extension/noderb_defer.c +54 -0
  93. data/ext/noderb_extension/noderb_defer.h +15 -0
  94. data/ext/noderb_extension/noderb_dns.c +1 -1
  95. data/ext/noderb_extension/noderb_fs.c +277 -0
  96. data/ext/noderb_extension/noderb_fs.h +27 -0
  97. data/ext/noderb_extension/noderb_process.c +5 -5
  98. data/ext/noderb_extension/noderb_tcp.c +10 -6
  99. data/ext/noderb_extension/noderb_timers.c +1 -1
  100. data/ext/noderb_extension/noderb_tools.c +42 -8
  101. data/ext/noderb_extension/noderb_tools.h +3 -1
  102. data/lib/noderb/defer.rb +25 -0
  103. data/lib/noderb/file.rb +119 -0
  104. data/lib/noderb/fs.rb +72 -0
  105. data/lib/noderb/version.rb +1 -1
  106. data/lib/noderb.rb +8 -0
  107. metadata +102 -266
  108. data/ext/noderb_extension/libuv/BSDmakefile +0 -2
  109. data/ext/noderb_extension/libuv/create-msvs-files.bat +0 -21
  110. data/ext/noderb_extension/libuv/deps/pthread-win32/ANNOUNCE +0 -482
  111. data/ext/noderb_extension/libuv/deps/pthread-win32/BUGS +0 -141
  112. data/ext/noderb_extension/libuv/deps/pthread-win32/Bmakefile +0 -268
  113. data/ext/noderb_extension/libuv/deps/pthread-win32/CONTRIBUTORS +0 -140
  114. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING +0 -150
  115. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING.LIB +0 -504
  116. data/ext/noderb_extension/libuv/deps/pthread-win32/ChangeLog +0 -5194
  117. data/ext/noderb_extension/libuv/deps/pthread-win32/FAQ +0 -451
  118. data/ext/noderb_extension/libuv/deps/pthread-win32/GNUmakefile +0 -593
  119. data/ext/noderb_extension/libuv/deps/pthread-win32/MAINTAINERS +0 -4
  120. data/ext/noderb_extension/libuv/deps/pthread-win32/Makefile +0 -516
  121. data/ext/noderb_extension/libuv/deps/pthread-win32/NEWS +0 -1245
  122. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile +0 -24
  123. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile.tests +0 -260
  124. data/ext/noderb_extension/libuv/deps/pthread-win32/PROGRESS +0 -4
  125. data/ext/noderb_extension/libuv/deps/pthread-win32/README +0 -601
  126. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Borland +0 -57
  127. data/ext/noderb_extension/libuv/deps/pthread-win32/README.CV +0 -3036
  128. data/ext/noderb_extension/libuv/deps/pthread-win32/README.NONPORTABLE +0 -783
  129. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Watcom +0 -62
  130. data/ext/noderb_extension/libuv/deps/pthread-win32/README.WinCE +0 -6
  131. data/ext/noderb_extension/libuv/deps/pthread-win32/TODO +0 -7
  132. data/ext/noderb_extension/libuv/deps/pthread-win32/WinCE-PORT +0 -222
  133. data/ext/noderb_extension/libuv/deps/pthread-win32/attr.c +0 -53
  134. data/ext/noderb_extension/libuv/deps/pthread-win32/autostatic.c +0 -69
  135. data/ext/noderb_extension/libuv/deps/pthread-win32/barrier.c +0 -47
  136. data/ext/noderb_extension/libuv/deps/pthread-win32/build/all.gyp +0 -207
  137. data/ext/noderb_extension/libuv/deps/pthread-win32/builddmc.bat +0 -9
  138. data/ext/noderb_extension/libuv/deps/pthread-win32/cancel.c +0 -44
  139. data/ext/noderb_extension/libuv/deps/pthread-win32/cleanup.c +0 -148
  140. data/ext/noderb_extension/libuv/deps/pthread-win32/condvar.c +0 -50
  141. data/ext/noderb_extension/libuv/deps/pthread-win32/config.h +0 -153
  142. data/ext/noderb_extension/libuv/deps/pthread-win32/context.h +0 -74
  143. data/ext/noderb_extension/libuv/deps/pthread-win32/create.c +0 -308
  144. data/ext/noderb_extension/libuv/deps/pthread-win32/dll.c +0 -92
  145. data/ext/noderb_extension/libuv/deps/pthread-win32/errno.c +0 -94
  146. data/ext/noderb_extension/libuv/deps/pthread-win32/exit.c +0 -44
  147. data/ext/noderb_extension/libuv/deps/pthread-win32/fork.c +0 -39
  148. data/ext/noderb_extension/libuv/deps/pthread-win32/global.c +0 -107
  149. data/ext/noderb_extension/libuv/deps/pthread-win32/implement.h +0 -944
  150. data/ext/noderb_extension/libuv/deps/pthread-win32/misc.c +0 -50
  151. data/ext/noderb_extension/libuv/deps/pthread-win32/mutex.c +0 -62
  152. data/ext/noderb_extension/libuv/deps/pthread-win32/need_errno.h +0 -145
  153. data/ext/noderb_extension/libuv/deps/pthread-win32/nonportable.c +0 -47
  154. data/ext/noderb_extension/libuv/deps/pthread-win32/private.c +0 -54
  155. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.c +0 -66
  156. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsp +0 -142
  157. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsw +0 -29
  158. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.h +0 -1368
  159. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_destroy.c +0 -79
  160. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getdetachstate.c +0 -86
  161. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getinheritsched.c +0 -51
  162. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedparam.c +0 -52
  163. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedpolicy.c +0 -61
  164. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getscope.c +0 -54
  165. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstackaddr.c +0 -97
  166. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstacksize.c +0 -100
  167. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_init.c +0 -117
  168. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setdetachstate.c +0 -91
  169. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setinheritsched.c +0 -57
  170. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedparam.c +0 -63
  171. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedpolicy.c +0 -55
  172. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setscope.c +0 -62
  173. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstackaddr.c +0 -97
  174. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstacksize.c +0 -110
  175. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_destroy.c +0 -103
  176. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_init.c +0 -69
  177. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_wait.c +0 -104
  178. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_destroy.c +0 -83
  179. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_getpshared.c +0 -95
  180. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_init.c +0 -85
  181. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_setpshared.c +0 -119
  182. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cancel.c +0 -189
  183. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_destroy.c +0 -253
  184. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_init.c +0 -167
  185. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_signal.c +0 -231
  186. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_wait.c +0 -567
  187. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_destroy.c +0 -86
  188. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_getpshared.c +0 -97
  189. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_init.c +0 -87
  190. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_setpshared.c +0 -117
  191. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_delay_np.c +0 -172
  192. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_detach.c +0 -136
  193. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_equal.c +0 -76
  194. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_exit.c +0 -106
  195. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getconcurrency.c +0 -45
  196. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getschedparam.c +0 -75
  197. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getspecific.c +0 -87
  198. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getunique_np.c +0 -47
  199. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getw32threadhandle_np.c +0 -65
  200. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_join.c +0 -157
  201. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_create.c +0 -108
  202. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_delete.c +0 -125
  203. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_kill.c +0 -105
  204. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_consistent.c +0 -187
  205. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_destroy.c +0 -148
  206. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_init.c +0 -130
  207. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_lock.c +0 -269
  208. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_timedlock.c +0 -324
  209. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_trylock.c +0 -154
  210. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_unlock.c +0 -175
  211. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_destroy.c +0 -83
  212. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getkind_np.c +0 -44
  213. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getpshared.c +0 -95
  214. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getrobust.c +0 -113
  215. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_gettype.c +0 -56
  216. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_init.c +0 -86
  217. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setkind_np.c +0 -44
  218. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setpshared.c +0 -119
  219. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setrobust.c +0 -119
  220. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_settype.c +0 -143
  221. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_num_processors_np.c +0 -56
  222. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_once.c +0 -79
  223. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_destroy.c +0 -143
  224. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_init.c +0 -109
  225. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_rdlock.c +0 -102
  226. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedrdlock.c +0 -109
  227. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedwrlock.c +0 -139
  228. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_tryrdlock.c +0 -102
  229. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_trywrlock.c +0 -122
  230. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_unlock.c +0 -93
  231. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_wrlock.c +0 -133
  232. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_destroy.c +0 -84
  233. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_getpshared.c +0 -97
  234. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_init.c +0 -83
  235. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_setpshared.c +0 -120
  236. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_self.c +0 -141
  237. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcancelstate.c +0 -125
  238. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcanceltype.c +0 -126
  239. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setconcurrency.c +0 -53
  240. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setschedparam.c +0 -123
  241. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setspecific.c +0 -167
  242. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_destroy.c +0 -111
  243. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_init.c +0 -123
  244. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_lock.c +0 -80
  245. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_trylock.c +0 -77
  246. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_unlock.c +0 -71
  247. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_testcancel.c +0 -103
  248. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_timechange_handler_np.c +0 -108
  249. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_win32_attach_detach_np.c +0 -258
  250. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_MCS_lock.c +0 -278
  251. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_callUserDestroyRoutines.c +0 -232
  252. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_calloc.c +0 -56
  253. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_cond_check_need_init.c +0 -78
  254. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_getprocessors.c +0 -91
  255. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_is_attr.c +0 -47
  256. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_mutex_check_need_init.c +0 -92
  257. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_new.c +0 -94
  258. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processInitialize.c +0 -92
  259. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processTerminate.c +0 -105
  260. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_relmillisecs.c +0 -132
  261. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_reuse.c +0 -151
  262. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_cancelwrwait.c +0 -50
  263. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_check_need_init.c +0 -77
  264. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_semwait.c +0 -135
  265. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_spinlock_check_need_init.c +0 -78
  266. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadDestroy.c +0 -79
  267. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadStart.c +0 -357
  268. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_throw.c +0 -189
  269. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_timespec.c +0 -83
  270. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocCreate.c +0 -118
  271. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocDestroy.c +0 -114
  272. data/ext/noderb_extension/libuv/deps/pthread-win32/rwlock.c +0 -51
  273. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.c +0 -53
  274. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.h +0 -183
  275. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_max.c +0 -134
  276. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_min.c +0 -135
  277. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_getscheduler.c +0 -71
  278. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_setscheduler.c +0 -83
  279. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_yield.c +0 -71
  280. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_close.c +0 -58
  281. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_destroy.c +0 -144
  282. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_getvalue.c +0 -110
  283. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_init.c +0 -169
  284. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_open.c +0 -58
  285. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post.c +0 -128
  286. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post_multiple.c +0 -142
  287. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_timedwait.c +0 -238
  288. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_trywait.c +0 -117
  289. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_unlink.c +0 -58
  290. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_wait.c +0 -187
  291. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.c +0 -69
  292. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.h +0 -169
  293. data/ext/noderb_extension/libuv/deps/pthread-win32/signal.c +0 -179
  294. data/ext/noderb_extension/libuv/deps/pthread-win32/spin.c +0 -46
  295. data/ext/noderb_extension/libuv/deps/pthread-win32/sync.c +0 -43
  296. data/ext/noderb_extension/libuv/deps/pthread-win32/tsd.c +0 -44
  297. data/ext/noderb_extension/libuv/deps/pthread-win32/version.rc +0 -388
  298. data/ext/noderb_extension/libuv/deps/pthread-win32/w32_CancelableWait.c +0 -161
  299. data/ext/noderb_extension/libuv/doc/iocp-links.html +0 -574
  300. data/ext/noderb_extension/libuv/src/uv-unix.c +0 -2421
  301. data/ext/noderb_extension/libuv/src/win/ntdll.h +0 -130
  302. /data/ext/noderb_extension/libuv/include/{ev.h → uv-private/ev.h} +0 -0
  303. /data/ext/noderb_extension/libuv/include/{ngx-queue.h → uv-private/ngx-queue.h} +0 -0
  304. /data/ext/noderb_extension/libuv/include/{tree.h → uv-private/tree.h} +0 -0
  305. /data/ext/noderb_extension/libuv/src/{uv-cygwin.c → unix/cygwin.c} +0 -0
  306. /data/ext/noderb_extension/libuv/src/{uv-darwin.c → unix/darwin.c} +0 -0
  307. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/Changes +0 -0
  308. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/LICENSE +0 -0
  309. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/Makefile.am +0 -0
  310. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/aclocal.m4 +0 -0
  311. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/autogen.sh +0 -0
  312. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config.h.in +0 -0
  313. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_cygwin.h +0 -0
  314. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_freebsd.h +0 -0
  315. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_sunos.h +0 -0
  316. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/configure.ac +0 -0
  317. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/demo.c +0 -0
  318. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/ecb.h +0 -0
  319. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.3 +0 -0
  320. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.pod +0 -0
  321. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/libeio.m4 +0 -0
  322. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/xthread.h +0 -0
  323. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Changes +0 -0
  324. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/LICENSE +0 -0
  325. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Makefile.am +0 -0
  326. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Makefile.in +0 -0
  327. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/README +0 -0
  328. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/aclocal.m4 +0 -0
  329. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/autogen.sh +0 -0
  330. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.guess +0 -0
  331. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.h.in +0 -0
  332. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.sub +0 -0
  333. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_cygwin.h +0 -0
  334. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_darwin.h +0 -0
  335. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_freebsd.h +0 -0
  336. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_sunos.h +0 -0
  337. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/configure +0 -0
  338. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/configure.ac +0 -0
  339. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/depcomp +0 -0
  340. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev++.h +0 -0
  341. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.3 +0 -0
  342. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.c +0 -0
  343. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.pod +0 -0
  344. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_epoll.c +0 -0
  345. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_kqueue.c +0 -0
  346. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_poll.c +0 -0
  347. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_port.c +0 -0
  348. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_select.c +0 -0
  349. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_vars.h +0 -0
  350. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_win32.c +0 -0
  351. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_wrap.h +0 -0
  352. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/event.c +0 -0
  353. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/event.h +0 -0
  354. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/install-sh +0 -0
  355. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/libev.m4 +0 -0
  356. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ltmain.sh +0 -0
  357. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/missing +0 -0
  358. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/mkinstalldirs +0 -0
  359. /data/ext/noderb_extension/libuv/src/{uv-freebsd.c → unix/freebsd.c} +0 -0
  360. /data/ext/noderb_extension/libuv/src/{uv-linux.c → unix/linux.c} +0 -0
  361. /data/ext/noderb_extension/libuv/src/{uv-sunos.c → unix/sunos.c} +0 -0
@@ -1,482 +0,0 @@
1
- PTHREADS-WIN32 RELEASE 2.9.0 (2007-??-??)
2
- -----------------------------------------
3
- Web Site: http://sources.redhat.com/pthreads-win32/
4
- FTP Site: ftp://sources.redhat.com/pub/pthreads-win32
5
- Maintainer: Ross Johnson <rpj@callisto.canberra.edu.au>
6
-
7
-
8
- We are pleased to announce the availability of a new release of
9
- Pthreads-win32, an Open Source Software implementation of the
10
- Threads component of the POSIX 1003.1 2001 Standard for Microsoft's
11
- Win32 environment. Some functions from other sections of POSIX
12
- 1003.1 2001 are also supported including semaphores and scheduling
13
- functions.
14
-
15
- Some common non-portable functions are also implemented for
16
- additional compatibility, as are a few functions specific
17
- to pthreads-win32 for easier integration with Win32 applications.
18
-
19
- Pthreads-win32 is free software, distributed under the GNU Lesser
20
- General Public License (LGPL).
21
-
22
-
23
- Acknowledgements
24
- ----------------
25
- This library is based originally on a Win32 pthreads
26
- implementation contributed by John Bossom <John.Bossom@cognos.com>.
27
-
28
- The implementation of Condition Variables uses algorithms developed
29
- by Alexander Terekhov and Louis Thomas.
30
-
31
- The implementation of POSIX mutexes has been improved by Thomas Pfaff
32
- and later by Alexander Terekhov.
33
-
34
- The implementation of Spinlocks and Barriers was contributed
35
- by Ross Johnson.
36
-
37
- The implementation of read/write locks was contributed by
38
- Aurelio Medina and improved by Alexander Terekhov.
39
-
40
- Many others have contributed significant time and effort to solve crutial
41
- problems in order to make the library workable, robust and reliable.
42
-
43
- Thanks to Xavier Leroy for granting permission to use and modify his
44
- LinuxThreads manual pages.
45
-
46
- Thanks to The Open Group for making the Single Unix Specification
47
- publicly available - many of the manual pages included in the package
48
- were extracted from it.
49
-
50
- There is also a separate CONTRIBUTORS file. This file and others are
51
- on the web site:
52
-
53
- http://sources.redhat.com/pthreads-win32
54
-
55
- As much as possible, the ChangeLog file acknowledges contributions to the
56
- code base in more detail.
57
-
58
-
59
- Changes since the last release
60
- ------------------------------
61
- These are now documented in the NEWS file.
62
- See the ChangeLog file also.
63
-
64
-
65
- Known Bugs
66
- ----------
67
- These are now documented in the BUGS file.
68
-
69
-
70
- Level of standards conformance
71
- ------------------------------
72
-
73
- The following POSIX 1003.1 2001 options are defined and set to 200112L:
74
-
75
- _POSIX_THREADS
76
- _POSIX_THREAD_SAFE_FUNCTIONS
77
- _POSIX_THREAD_ATTR_STACKSIZE
78
- _POSIX_THREAD_PRIORITY_SCHEDULING
79
- _POSIX_SEMAPHORES
80
- _POSIX_READER_WRITER_LOCKS
81
- _POSIX_SPIN_LOCKS
82
- _POSIX_BARRIERS
83
-
84
-
85
- The following POSIX 1003.1 2001 options are defined and set to -1:
86
-
87
- _POSIX_THREAD_ATTR_STACKADDR
88
- _POSIX_THREAD_PRIO_INHERIT
89
- _POSIX_THREAD_PRIO_PROTECT
90
- _POSIX_THREAD_PROCESS_SHARED
91
-
92
-
93
- The following POSIX 1003.1 2001 limits are defined and set:
94
-
95
- _POSIX_THREAD_THREADS_MAX
96
- _POSIX_SEM_VALUE_MAX
97
- _POSIX_SEM_NSEMS_MAX
98
- _POSIX_THREAD_KEYS_MAX
99
- _POSIX_THREAD_DESTRUCTOR_ITERATIONS
100
- PTHREAD_STACK_MIN
101
- PTHREAD_THREADS_MAX
102
- SEM_VALUE_MAX
103
- SEM_NSEMS_MAX
104
- PTHREAD_KEYS_MAX
105
- PTHREAD_DESTRUCTOR_ITERATIONS
106
-
107
-
108
- The following functions are implemented:
109
-
110
- ---------------------------
111
- PThreads
112
- ---------------------------
113
- pthread_attr_init
114
- pthread_attr_destroy
115
- pthread_attr_getdetachstate
116
- pthread_attr_getstackaddr
117
- pthread_attr_getstacksize
118
- pthread_attr_setdetachstate
119
- pthread_attr_setstackaddr
120
- pthread_attr_setstacksize
121
-
122
- pthread_create
123
- pthread_detach
124
- pthread_equal
125
- pthread_exit
126
- pthread_join
127
- pthread_once
128
- pthread_self
129
-
130
- pthread_cancel
131
- pthread_cleanup_pop
132
- pthread_cleanup_push
133
- pthread_setcancelstate
134
- pthread_setcanceltype
135
- pthread_testcancel
136
-
137
- ---------------------------
138
- Thread Specific Data
139
- ---------------------------
140
- pthread_key_create
141
- pthread_key_delete
142
- pthread_setspecific
143
- pthread_getspecific
144
-
145
- ---------------------------
146
- Mutexes
147
- ---------------------------
148
- pthread_mutexattr_init
149
- pthread_mutexattr_destroy
150
- pthread_mutexattr_getpshared
151
- pthread_mutexattr_setpshared
152
- pthread_mutexattr_gettype
153
- pthread_mutexattr_settype (types: PTHREAD_MUTEX_DEFAULT
154
- PTHREAD_MUTEX_NORMAL
155
- PTHREAD_MUTEX_ERRORCHECK
156
- PTHREAD_MUTEX_RECURSIVE )
157
- pthread_mutexattr_getrobust
158
- pthread_mutexattr_setrobust (values: PTHREAD_MUTEX_STALLED
159
- PTHREAD_MUTEX_ROBUST)
160
- pthread_mutex_init
161
- pthread_mutex_destroy
162
- pthread_mutex_lock
163
- pthread_mutex_trylock
164
- pthread_mutex_timedlock
165
- pthread_mutex_unlock
166
- pthread_mutex_consistent
167
-
168
- ---------------------------
169
- Condition Variables
170
- ---------------------------
171
- pthread_condattr_init
172
- pthread_condattr_destroy
173
- pthread_condattr_getpshared
174
- pthread_condattr_setpshared
175
-
176
- pthread_cond_init
177
- pthread_cond_destroy
178
- pthread_cond_wait
179
- pthread_cond_timedwait
180
- pthread_cond_signal
181
- pthread_cond_broadcast
182
-
183
- ---------------------------
184
- Read/Write Locks
185
- ---------------------------
186
- pthread_rwlock_init
187
- pthread_rwlock_destroy
188
- pthread_rwlock_tryrdlock
189
- pthread_rwlock_trywrlock
190
- pthread_rwlock_rdlock
191
- pthread_rwlock_timedrdlock
192
- pthread_rwlock_rwlock
193
- pthread_rwlock_timedwrlock
194
- pthread_rwlock_unlock
195
- pthread_rwlockattr_init
196
- pthread_rwlockattr_destroy
197
- pthread_rwlockattr_getpshared
198
- pthread_rwlockattr_setpshared
199
-
200
- ---------------------------
201
- Spin Locks
202
- ---------------------------
203
- pthread_spin_init
204
- pthread_spin_destroy
205
- pthread_spin_lock
206
- pthread_spin_unlock
207
- pthread_spin_trylock
208
-
209
- ---------------------------
210
- Barriers
211
- ---------------------------
212
- pthread_barrier_init
213
- pthread_barrier_destroy
214
- pthread_barrier_wait
215
- pthread_barrierattr_init
216
- pthread_barrierattr_destroy
217
- pthread_barrierattr_getpshared
218
- pthread_barrierattr_setpshared
219
-
220
- ---------------------------
221
- Semaphores
222
- ---------------------------
223
- sem_init
224
- sem_destroy
225
- sem_post
226
- sem_wait
227
- sem_trywait
228
- sem_timedwait
229
- sem_getvalue (# free if +ve, # of waiters if -ve)
230
- sem_open (returns an error ENOSYS)
231
- sem_close (returns an error ENOSYS)
232
- sem_unlink (returns an error ENOSYS)
233
-
234
- ---------------------------
235
- RealTime Scheduling
236
- ---------------------------
237
- pthread_attr_getschedparam
238
- pthread_attr_setschedparam
239
- pthread_attr_getinheritsched
240
- pthread_attr_setinheritsched
241
- pthread_attr_getschedpolicy (only supports SCHED_OTHER)
242
- pthread_attr_setschedpolicy (only supports SCHED_OTHER)
243
- pthread_getschedparam
244
- pthread_setschedparam
245
- pthread_getconcurrency
246
- pthread_setconcurrency
247
- pthread_attr_getscope
248
- pthread_attr_setscope (only supports PTHREAD_SCOPE_SYSTEM)
249
- sched_get_priority_max
250
- sched_get_priority_min
251
- sched_rr_get_interval (returns an error ENOTSUP)
252
- sched_setscheduler (only supports SCHED_OTHER)
253
- sched_getscheduler (only supports SCHED_OTHER)
254
- sched_yield
255
-
256
- ---------------------------
257
- Signals
258
- ---------------------------
259
- pthread_sigmask
260
- pthread_kill (only supports zero sig value,
261
- for thread validity checking)
262
-
263
- ---------------------------
264
- Non-portable routines (see the README.NONPORTABLE file for usage)
265
- ---------------------------
266
- pthread_getw32threadhandle_np
267
- pthread_timechange_handler_np
268
- pthread_delay_np
269
- pthread_getunique_np
270
- pthread_mutexattr_getkind_np
271
- pthread_mutexattr_setkind_np (types: PTHREAD_MUTEX_FAST_NP,
272
- PTHREAD_MUTEX_ERRORCHECK_NP,
273
- PTHREAD_MUTEX_RECURSIVE_NP,
274
- PTHREAD_MUTEX_ADAPTIVE_NP,
275
- PTHREAD_MUTEX_TIMED_NP)
276
- pthread_num_processors_np
277
- pthread_win32_process_attach_np (Required when statically linking
278
- the library)
279
- pthread_win32_process_detach_np (Required when statically linking
280
- the library)
281
- pthread_win32_thread_attach_np (Required when statically linking
282
- the library)
283
- pthread_win32_thread_detach_np (Required when statically linking
284
- the library)
285
-
286
- ---------------------------
287
- Static Initializers
288
- ---------------------------
289
- PTHREAD_ONCE_INIT
290
- PTHREAD_MUTEX_INITIALIZER
291
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER
292
- PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP
293
- PTHREAD_ERRORCHECK_MUTEX_INITIALIZER
294
- PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP
295
- PTHREAD_COND_INITIALIZER
296
- PTHREAD_RWLOCK_INITIALIZER
297
- PTHREAD_SPINLOCK_INITIALIZER
298
-
299
-
300
- The library includes two non-API functions for creating cancellation
301
- points in applications and libraries:
302
-
303
- pthreadCancelableWait
304
- pthreadCancelableTimedWait
305
-
306
-
307
- The following functions are not implemented:
308
-
309
- ---------------------------
310
- RealTime Scheduling
311
- ---------------------------
312
- pthread_mutex_getprioceiling
313
- pthread_mutex_setprioceiling
314
- pthread_mutex_attr_getprioceiling
315
- pthread_mutex_attr_getprotocol
316
- pthread_mutex_attr_setprioceiling
317
- pthread_mutex_attr_setprotocol
318
-
319
- ---------------------------
320
- Fork Handlers
321
- ---------------------------
322
- pthread_atfork
323
-
324
- ---------------------------
325
- Stdio
326
- ---------------------------
327
- flockfile
328
- ftrylockfile
329
- funlockfile
330
- getc_unlocked
331
- getchar_unlocked
332
- putc_unlocked
333
- putchar_unlocked
334
-
335
- ---------------------------
336
- Thread-Safe C Runtime Library
337
- ---------------------------
338
- readdir_r
339
- getgrgid_r
340
- getgrnam_r
341
- getpwuid_r
342
- getpwnam_r
343
-
344
- ---------------------------
345
- Signals
346
- ---------------------------
347
- sigtimedwait
348
- sigwait
349
- sigwaitinfo
350
-
351
- ---------------------------
352
- General
353
- ---------------------------
354
- sysconf
355
-
356
- ---------------------------
357
- Thread-Safe C Runtime Library (macros)
358
- ---------------------------
359
- strtok_r
360
- asctime_r
361
- ctime_r
362
- gmtime_r
363
- localtime_r
364
- rand_r
365
-
366
-
367
- Availability
368
- ------------
369
-
370
- The prebuilt DLL, export libs (for both MSVC and Mingw32), and the header
371
- files (pthread.h, semaphore.h, sched.h) are available along with the
372
- complete source code.
373
-
374
- The source code can be found at:
375
-
376
- ftp://sources.redhat.com/pub/pthreads-win32
377
-
378
- and as individual source code files at
379
-
380
- ftp://sources.redhat.com/pub/pthreads-win32/source
381
-
382
- The pre-built DLL, export libraries and include files can be found at:
383
-
384
- ftp://sources.redhat.com/pub/pthreads-win32/dll-latest
385
-
386
-
387
-
388
- Mailing List
389
- ------------
390
-
391
- There is a mailing list for discussing pthreads on Win32. To join,
392
- send email to:
393
-
394
- pthreads-win32-subscribe@sourceware.cygnus.com
395
-
396
-
397
- Application Development Environments
398
- ------------------------------------
399
-
400
- See the README file for more information.
401
-
402
- MSVC:
403
- MSVC using SEH works. Distribute pthreadVSE.dll with your application.
404
- MSVC using C++ EH works. Distribute pthreadVCE.dll with your application.
405
- MSVC using C setjmp/longjmp works. Distribute pthreadVC.dll with your application.
406
-
407
-
408
- Mingw32:
409
- See the FAQ, Questions 6 and 10.
410
-
411
- Mingw using C++ EH works. Distribute pthreadGCE.dll with your application.
412
- Mingw using C setjmp/longjmp works. Distribute pthreadGC.dll with your application.
413
-
414
-
415
- Cygwin: (http://sourceware.cygnus.com/cygwin/)
416
- Developers using Cygwin do not need pthreads-win32 since it has POSIX threads
417
- support. Refer to its documentation for details and extent.
418
-
419
-
420
- UWIN:
421
- UWIN is a complete Unix-like environment for Windows from AT&T. Pthreads-win32
422
- doesn't currently support UWIN (and vice versa), but that may change in the
423
- future.
424
-
425
- Generally:
426
- For convenience, the following pre-built files are available on the FTP site
427
- (see Availability above):
428
-
429
- pthread.h - for POSIX threads
430
- semaphore.h - for POSIX semaphores
431
- sched.h - for POSIX scheduling
432
- pthreadVCE.dll - built with MSVC++ compiler using C++ EH
433
- pthreadVCE.lib
434
- pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp
435
- pthreadVC.lib
436
- pthreadVSE.dll - built with MSVC compiler using SEH
437
- pthreadVSE.lib
438
- pthreadGCE.dll - built with Mingw32 G++ 2.95.2-1
439
- pthreadGC.dll - built with Mingw32 GCC 2.95.2-1 using setjmp/longjmp
440
- libpthreadGCE.a - derived from pthreadGCE.dll
441
- libpthreadGC.a - derived from pthreadGC.dll
442
- gcc.dll - needed if distributing applications that use
443
- pthreadGCE.dll (but see the FAQ Q 10 for the latest
444
- related information)
445
-
446
- These are the only files you need in order to build POSIX threads
447
- applications for Win32 using either MSVC or Mingw32.
448
-
449
- See the FAQ file in the source tree for additional information.
450
-
451
-
452
- Documentation
453
- -------------
454
-
455
- For the authoritative reference, see the online POSIX
456
- standard reference at:
457
-
458
- http://www.OpenGroup.org
459
-
460
- For POSIX Thread API programming, several reference books are
461
- available:
462
-
463
- Programming with POSIX Threads
464
- David R. Butenhof
465
- Addison-Wesley (pub)
466
-
467
- Pthreads Programming
468
- By Bradford Nichols, Dick Buttlar & Jacqueline Proulx Farrell
469
- O'Reilly (pub)
470
-
471
- On the web: see the links at the bottom of the pthreads-win32 site:
472
-
473
- http://sources.redhat.com/pthreads-win32/
474
-
475
- Currently, there is no documentation included in the package apart
476
- from the copious comments in the source code.
477
-
478
-
479
-
480
- Enjoy!
481
-
482
- Ross Johnson
@@ -1,141 +0,0 @@
1
- ----------
2
- Known bugs
3
- ----------
4
-
5
- 1. Not strictly a bug, more of a gotcha.
6
-
7
- Under MS VC++ (only tested with version 6.0), a term_func
8
- set via the standard C++ set_terminate() function causes the
9
- application to abort.
10
-
11
- Notes from the MSVC++ manual:
12
- 1) A term_func() should call exit(), otherwise
13
- abort() will be called on return to the caller.
14
- A call to abort() raises SIGABRT and the default signal handler
15
- for all signals terminates the calling program with
16
- exit code 3.
17
- 2) A term_func() must not throw an exception. Therefore
18
- term_func() should not call pthread_exit(), which
19
- works by throwing an exception (pthreadVCE or pthreadVSE)
20
- or by calling longjmp (pthreadVC).
21
-
22
- Workaround: avoid using pthread_exit() in C++ applications. Exit
23
- threads by dropping through the end of the thread routine.
24
-
25
- 2. Cancellation problems in C++ builds
26
- - Milan Gardian
27
-
28
- [Note: It's not clear if this problem isn't simply due to the context
29
- switch in pthread_cancel() which occurs unless the QueueUserAPCEx
30
- library and driver are installed and used. Just like setjmp/longjmp,
31
- this is probably not going to work well in C++. In any case, unless for
32
- some very unusual reason you really must use the C++ build then please
33
- use the C build pthreadVC2.dll or pthreadGC2.dll, i.e. for C++
34
- applications.]
35
-
36
- This is suspected to be a compiler bug in VC6.0, and also seen in
37
- VC7.0 and VS .NET 2003. The GNU C++ compiler does not have a problem
38
- with this, and it has been reported that the Intel C++ 8.1 compiler
39
- and Visual C++ 2005 Express Edition Beta2 pass tests\semaphore4.c
40
- (which exposes the bug).
41
-
42
- Workaround [rpj - 2 Feb 2002]
43
- -----------------------------
44
- [Please note: this workaround did not solve a similar problem in
45
- snapshot-2004-11-03 or later, even though similar symptoms were seen.
46
- tests\semaphore4.c fails in that snapshot for the VCE version of the
47
- DLL.]
48
-
49
- The problem disappears when /Ob0 is used, i.e. /O2 /Ob0 works OK,
50
- but if you want to use inlining optimisation you can be much more
51
- specific about where it's switched off and on by using a pragma.
52
-
53
- So the inlining optimisation is interfering with the way that cleanup
54
- handlers are run. It appears to relate to auto-inlining of class methods
55
- since this is the only auto inlining that is performed at /O1 optimisation
56
- (functions with the "inline" qualifier are also inlined, but the problem
57
- doesn't appear to involve any such functions in the library or testsuite).
58
-
59
- In order to confirm the inlining culprit, the following use of pragmas
60
- eliminate the problem but I don't know how to make it transparent, putting
61
- it in, say, pthread.h where pthread_cleanup_push defined as a macro.
62
-
63
- #pragma inline_depth(0)
64
- pthread_cleanup_push(handlerFunc, (void *) &arg);
65
-
66
- /* ... */
67
-
68
- pthread_cleanup_pop(0);
69
- #pragma inline_depth()
70
-
71
- Note the empty () pragma value after the pop macro. This resets depth to the
72
- default. Or you can specify a non-zero depth here.
73
-
74
- The pragma is also needed (and now used) within the library itself wherever
75
- cleanup handlers are used (condvar.c and rwlock.c).
76
-
77
- Use of these pragmas allows compiler optimisations /O1 and /O2 to be
78
- used for either or both the library and applications.
79
-
80
- Experimenting further, I found that wrapping the actual cleanup handler
81
- function with #pragma auto_inline(off|on) does NOT work.
82
-
83
- MSVC6.0 doesn't appear to support the C99 standard's _Pragma directive,
84
- however, later versions may. This form is embeddable inside #define
85
- macros, which would be ideal because it would mean that it could be added
86
- to the push/pop macro definitions in pthread.h and hidden from the
87
- application programmer.
88
-
89
- [/rpj]
90
-
91
- Original problem description
92
- ----------------------------
93
-
94
- The cancellation (actually, cleanup-after-cancel) tests fail when using VC
95
- (professional) optimisation switches (/O1 or /O2) in pthreads library. I
96
- have not investigated which concrete optimisation technique causes this
97
- problem (/Og, /Oi, /Ot, /Oy, /Ob1, /Gs, /Gf, /Gy, etc.), but here is a
98
- summary of builds and corresponding failures:
99
-
100
- * pthreads VSE (optimised tests): OK
101
- * pthreads VCE (optimised tests): Failed "cleanup1" test (runtime)
102
-
103
- * pthreads VSE (DLL in CRT, optimised tests): OK
104
- * pthreads VCE (DLL in CRT, optimised tests): Failed "cleanup1" test
105
- (runtime)
106
-
107
- Please note that while in VSE version of the pthreads library the
108
- optimisation does not really have any impact on the tests (they pass OK), in
109
- VCE version addition of optimisation (/O2 in this case) causes the tests to
110
- fail uniformly - either in "cleanup0" or "cleanup1" test cases.
111
-
112
- Please note that all the tests above use default pthreads DLL (no
113
- optimisations, linked with either static or DLL CRT, based on test type).
114
- Therefore the problem lies not within the pthreads DLL but within the
115
- compiled client code (the application using pthreads -> involvement of
116
- "pthread.h").
117
-
118
- I think the message of this section is that usage of VCE version of pthreads
119
- in applications relying on cancellation/cleanup AND using optimisations for
120
- creation of production code is highly unreliable for the current version of
121
- the pthreads library.
122
-
123
- 3. The Borland Builder 5.5 version of the library produces memory read exceptions
124
- in some tests.
125
-
126
- 4. pthread_barrier_wait() can deadlock if the number of potential calling
127
- threads for a particular barrier is greater than the barrier count parameter
128
- given to pthread_barrier_init() for that barrier.
129
-
130
- This is due to the very lightweight implementation of pthread-win32 barriers.
131
- To cope with more than "count" possible waiters, barriers must effectively
132
- implement all the same safeguards as condition variables, making them much
133
- "heavier" than at present.
134
-
135
- The workaround is to ensure that no more than "count" threads attempt to wait
136
- at the barrier.
137
-
138
- 5. Canceling a thread blocked on pthread_once appears not to work in the MSVC++
139
- version of the library "pthreadVCE.dll". The test case "once3.c" hangs. I have no
140
- clues on this at present. All other versions pass this test ok - pthreadsVC.dll,
141
- pthreadsVSE.dll, pthreadsGC.dll and pthreadsGCE.dll.