noderb 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,189 +0,0 @@
1
- /*
2
- * pthread_cancel.c
3
- *
4
- * Description:
5
- * POSIX thread functions related to thread cancellation.
6
- *
7
- * --------------------------------------------------------------------------
8
- *
9
- * Pthreads-win32 - POSIX Threads Library for Win32
10
- * Copyright(C) 1998 John E. Bossom
11
- * Copyright(C) 1999,2005 Pthreads-win32 contributors
12
- *
13
- * Contact Email: rpj@callisto.canberra.edu.au
14
- *
15
- * The current list of contributors is contained
16
- * in the file CONTRIBUTORS included with the source
17
- * code distribution. The list can also be seen at the
18
- * following World Wide Web location:
19
- * http://sources.redhat.com/pthreads-win32/contributors.html
20
- *
21
- * This library is free software; you can redistribute it and/or
22
- * modify it under the terms of the GNU Lesser General Public
23
- * License as published by the Free Software Foundation; either
24
- * version 2 of the License, or (at your option) any later version.
25
- *
26
- * This library is distributed in the hope that it will be useful,
27
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
28
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
29
- * Lesser General Public License for more details.
30
- *
31
- * You should have received a copy of the GNU Lesser General Public
32
- * License along with this library in the file COPYING.LIB;
33
- * if not, write to the Free Software Foundation, Inc.,
34
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
35
- */
36
-
37
- #include "pthread.h"
38
- #include "implement.h"
39
- #include "context.h"
40
-
41
- static void
42
- ptw32_cancel_self (void)
43
- {
44
- ptw32_throw (PTW32_EPS_CANCEL);
45
-
46
- /* Never reached */
47
- }
48
-
49
- static void CALLBACK
50
- ptw32_cancel_callback (ULONG_PTR unused)
51
- {
52
- ptw32_throw (PTW32_EPS_CANCEL);
53
-
54
- /* Never reached */
55
- }
56
-
57
- /*
58
- * ptw32_RegisterCancelation() -
59
- * Must have args of same type as QueueUserAPCEx because this function
60
- * is a substitute for QueueUserAPCEx if it's not available.
61
- */
62
- DWORD
63
- ptw32_RegisterCancelation (PAPCFUNC unused1, HANDLE threadH, DWORD unused2)
64
- {
65
- CONTEXT context;
66
-
67
- context.ContextFlags = CONTEXT_CONTROL;
68
- GetThreadContext (threadH, &context);
69
- PTW32_PROGCTR (context) = (DWORD_PTR) ptw32_cancel_self;
70
- SetThreadContext (threadH, &context);
71
- return 0;
72
- }
73
-
74
- int
75
- pthread_cancel (pthread_t thread)
76
- /*
77
- * ------------------------------------------------------
78
- * DOCPUBLIC
79
- * This function requests cancellation of 'thread'.
80
- *
81
- * PARAMETERS
82
- * thread
83
- * reference to an instance of pthread_t
84
- *
85
- *
86
- * DESCRIPTION
87
- * This function requests cancellation of 'thread'.
88
- * NOTE: cancellation is asynchronous; use pthread_join to
89
- * wait for termination of 'thread' if necessary.
90
- *
91
- * RESULTS
92
- * 0 successfully requested cancellation,
93
- * ESRCH no thread found corresponding to 'thread',
94
- * ENOMEM implicit self thread create failed.
95
- * ------------------------------------------------------
96
- */
97
- {
98
- int result;
99
- int cancel_self;
100
- pthread_t self;
101
- ptw32_thread_t * tp;
102
- ptw32_mcs_local_node_t stateLock;
103
-
104
- result = pthread_kill (thread, 0);
105
-
106
- if (0 != result)
107
- {
108
- return result;
109
- }
110
-
111
- if ((self = pthread_self ()).p == NULL)
112
- {
113
- return ENOMEM;
114
- };
115
-
116
- /*
117
- * For self cancellation we need to ensure that a thread can't
118
- * deadlock itself trying to cancel itself asynchronously
119
- * (pthread_cancel is required to be an async-cancel
120
- * safe function).
121
- */
122
- cancel_self = pthread_equal (thread, self);
123
-
124
- tp = (ptw32_thread_t *) thread.p;
125
-
126
- /*
127
- * Lock for async-cancel safety.
128
- */
129
- ptw32_mcs_lock_acquire (&tp->stateLock, &stateLock);
130
-
131
- if (tp->cancelType == PTHREAD_CANCEL_ASYNCHRONOUS
132
- && tp->cancelState == PTHREAD_CANCEL_ENABLE
133
- && tp->state < PThreadStateCanceling)
134
- {
135
- if (cancel_self)
136
- {
137
- tp->state = PThreadStateCanceling;
138
- tp->cancelState = PTHREAD_CANCEL_DISABLE;
139
-
140
- ptw32_mcs_lock_release (&stateLock);
141
- ptw32_throw (PTW32_EPS_CANCEL);
142
-
143
- /* Never reached */
144
- }
145
- else
146
- {
147
- HANDLE threadH = tp->threadH;
148
-
149
- SuspendThread (threadH);
150
-
151
- if (WaitForSingleObject (threadH, 0) == WAIT_TIMEOUT)
152
- {
153
- tp->state = PThreadStateCanceling;
154
- tp->cancelState = PTHREAD_CANCEL_DISABLE;
155
- /*
156
- * If alertdrv and QueueUserAPCEx is available then the following
157
- * will result in a call to QueueUserAPCEx with the args given, otherwise
158
- * this will result in a call to ptw32_RegisterCancelation and only
159
- * the threadH arg will be used.
160
- */
161
- ptw32_register_cancelation ((PAPCFUNC)ptw32_cancel_callback, threadH, 0);
162
- ptw32_mcs_lock_release (&stateLock);
163
- ResumeThread (threadH);
164
- }
165
- }
166
- }
167
- else
168
- {
169
- /*
170
- * Set for deferred cancellation.
171
- */
172
- if (tp->state < PThreadStateCancelPending)
173
- {
174
- tp->state = PThreadStateCancelPending;
175
- if (!SetEvent (tp->cancelEvent))
176
- {
177
- result = ESRCH;
178
- }
179
- }
180
- else if (tp->state >= PThreadStateCanceling)
181
- {
182
- result = ESRCH;
183
- }
184
-
185
- ptw32_mcs_lock_release (&stateLock);
186
- }
187
-
188
- return (result);
189
- }
@@ -1,253 +0,0 @@
1
- /*
2
- * pthread_cond_destroy.c
3
- *
4
- * Description:
5
- * This translation unit implements condition variables and their primitives.
6
- *
7
- *
8
- * --------------------------------------------------------------------------
9
- *
10
- * Pthreads-win32 - POSIX Threads Library for Win32
11
- * Copyright(C) 1998 John E. Bossom
12
- * Copyright(C) 1999,2005 Pthreads-win32 contributors
13
- *
14
- * Contact Email: rpj@callisto.canberra.edu.au
15
- *
16
- * The current list of contributors is contained
17
- * in the file CONTRIBUTORS included with the source
18
- * code distribution. The list can also be seen at the
19
- * following World Wide Web location:
20
- * http://sources.redhat.com/pthreads-win32/contributors.html
21
- *
22
- * This library is free software; you can redistribute it and/or
23
- * modify it under the terms of the GNU Lesser General Public
24
- * License as published by the Free Software Foundation; either
25
- * version 2 of the License, or (at your option) any later version.
26
- *
27
- * This library is distributed in the hope that it will be useful,
28
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
29
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
30
- * Lesser General Public License for more details.
31
- *
32
- * You should have received a copy of the GNU Lesser General Public
33
- * License along with this library in the file COPYING.LIB;
34
- * if not, write to the Free Software Foundation, Inc.,
35
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
36
- */
37
-
38
- #include "pthread.h"
39
- #include "implement.h"
40
-
41
- int
42
- pthread_cond_destroy (pthread_cond_t * cond)
43
- /*
44
- * ------------------------------------------------------
45
- * DOCPUBLIC
46
- * This function destroys a condition variable
47
- *
48
- *
49
- * PARAMETERS
50
- * cond
51
- * pointer to an instance of pthread_cond_t
52
- *
53
- *
54
- * DESCRIPTION
55
- * This function destroys a condition variable.
56
- *
57
- * NOTES:
58
- * 1) A condition variable can be destroyed
59
- * immediately after all the threads that
60
- * are blocked on it are awakened. e.g.
61
- *
62
- * struct list {
63
- * pthread_mutex_t lm;
64
- * ...
65
- * }
66
- *
67
- * struct elt {
68
- * key k;
69
- * int busy;
70
- * pthread_cond_t notbusy;
71
- * ...
72
- * }
73
- *
74
- *
75
- * struct elt *
76
- * list_find(struct list *lp, key k)
77
- * {
78
- * struct elt *ep;
79
- *
80
- * pthread_mutex_lock(&lp->lm);
81
- * while ((ep = find_elt(l,k) != NULL) && ep->busy)
82
- * pthread_cond_wait(&ep->notbusy, &lp->lm);
83
- * if (ep != NULL)
84
- * ep->busy = 1;
85
- * pthread_mutex_unlock(&lp->lm);
86
- * return(ep);
87
- * }
88
- *
89
- * delete_elt(struct list *lp, struct elt *ep)
90
- * {
91
- * pthread_mutex_lock(&lp->lm);
92
- * assert(ep->busy);
93
- * ... remove ep from list ...
94
- * ep->busy = 0;
95
- * (A) pthread_cond_broadcast(&ep->notbusy);
96
- * pthread_mutex_unlock(&lp->lm);
97
- * (B) pthread_cond_destroy(&rp->notbusy);
98
- * free(ep);
99
- * }
100
- *
101
- * In this example, the condition variable
102
- * and its list element may be freed (line B)
103
- * immediately after all threads waiting for
104
- * it are awakened (line A), since the mutex
105
- * and the code ensure that no other thread
106
- * can touch the element to be deleted.
107
- *
108
- * RESULTS
109
- * 0 successfully released condition variable,
110
- * EINVAL 'cond' is invalid,
111
- * EBUSY 'cond' is in use,
112
- *
113
- * ------------------------------------------------------
114
- */
115
- {
116
- pthread_cond_t cv;
117
- int result = 0, result1 = 0, result2 = 0;
118
-
119
- /*
120
- * Assuming any race condition here is harmless.
121
- */
122
- if (cond == NULL || *cond == NULL)
123
- {
124
- return EINVAL;
125
- }
126
-
127
- if (*cond != PTHREAD_COND_INITIALIZER)
128
- {
129
- ptw32_mcs_local_node_t node;
130
- ptw32_mcs_lock_acquire(&ptw32_cond_list_lock, &node);
131
-
132
- cv = *cond;
133
-
134
- /*
135
- * Close the gate; this will synchronize this thread with
136
- * all already signaled waiters to let them retract their
137
- * waiter status - SEE NOTE 1 ABOVE!!!
138
- */
139
- if (ptw32_semwait (&(cv->semBlockLock)) != 0) /* Non-cancelable */
140
- {
141
- result = errno;
142
- }
143
- else
144
- {
145
- /*
146
- * !TRY! lock mtxUnblockLock; try will detect busy condition
147
- * and will not cause a deadlock with respect to concurrent
148
- * signal/broadcast.
149
- */
150
- if ((result = pthread_mutex_trylock (&(cv->mtxUnblockLock))) != 0)
151
- {
152
- (void) sem_post (&(cv->semBlockLock));
153
- }
154
- }
155
-
156
- if (result != 0)
157
- {
158
- ptw32_mcs_lock_release(&node);
159
- return result;
160
- }
161
-
162
- /*
163
- * Check whether cv is still busy (still has waiters)
164
- */
165
- if (cv->nWaitersBlocked > cv->nWaitersGone)
166
- {
167
- if (sem_post (&(cv->semBlockLock)) != 0)
168
- {
169
- result = errno;
170
- }
171
- result1 = pthread_mutex_unlock (&(cv->mtxUnblockLock));
172
- result2 = EBUSY;
173
- }
174
- else
175
- {
176
- /*
177
- * Now it is safe to destroy
178
- */
179
- *cond = NULL;
180
-
181
- if (sem_destroy (&(cv->semBlockLock)) != 0)
182
- {
183
- result = errno;
184
- }
185
- if (sem_destroy (&(cv->semBlockQueue)) != 0)
186
- {
187
- result1 = errno;
188
- }
189
- if ((result2 = pthread_mutex_unlock (&(cv->mtxUnblockLock))) == 0)
190
- {
191
- result2 = pthread_mutex_destroy (&(cv->mtxUnblockLock));
192
- }
193
-
194
- /* Unlink the CV from the list */
195
-
196
- if (ptw32_cond_list_head == cv)
197
- {
198
- ptw32_cond_list_head = cv->next;
199
- }
200
- else
201
- {
202
- cv->prev->next = cv->next;
203
- }
204
-
205
- if (ptw32_cond_list_tail == cv)
206
- {
207
- ptw32_cond_list_tail = cv->prev;
208
- }
209
- else
210
- {
211
- cv->next->prev = cv->prev;
212
- }
213
-
214
- (void) free (cv);
215
- }
216
-
217
- ptw32_mcs_lock_release(&node);
218
- }
219
- else
220
- {
221
- ptw32_mcs_local_node_t node;
222
- /*
223
- * See notes in ptw32_cond_check_need_init() above also.
224
- */
225
- ptw32_mcs_lock_acquire(&ptw32_cond_test_init_lock, &node);
226
-
227
- /*
228
- * Check again.
229
- */
230
- if (*cond == PTHREAD_COND_INITIALIZER)
231
- {
232
- /*
233
- * This is all we need to do to destroy a statically
234
- * initialised cond that has not yet been used (initialised).
235
- * If we get to here, another thread waiting to initialise
236
- * this cond will get an EINVAL. That's OK.
237
- */
238
- *cond = NULL;
239
- }
240
- else
241
- {
242
- /*
243
- * The cv has been initialised while we were waiting
244
- * so assume it's in use.
245
- */
246
- result = EBUSY;
247
- }
248
-
249
- ptw32_mcs_lock_release(&node);
250
- }
251
-
252
- return ((result != 0) ? result : ((result1 != 0) ? result1 : result2));
253
- }
@@ -1,167 +0,0 @@
1
- /*
2
- * pthread_cond_init.c
3
- *
4
- * Description:
5
- * This translation unit implements condition variables and their primitives.
6
- *
7
- *
8
- * --------------------------------------------------------------------------
9
- *
10
- * Pthreads-win32 - POSIX Threads Library for Win32
11
- * Copyright(C) 1998 John E. Bossom
12
- * Copyright(C) 1999,2005 Pthreads-win32 contributors
13
- *
14
- * Contact Email: rpj@callisto.canberra.edu.au
15
- *
16
- * The current list of contributors is contained
17
- * in the file CONTRIBUTORS included with the source
18
- * code distribution. The list can also be seen at the
19
- * following World Wide Web location:
20
- * http://sources.redhat.com/pthreads-win32/contributors.html
21
- *
22
- * This library is free software; you can redistribute it and/or
23
- * modify it under the terms of the GNU Lesser General Public
24
- * License as published by the Free Software Foundation; either
25
- * version 2 of the License, or (at your option) any later version.
26
- *
27
- * This library is distributed in the hope that it will be useful,
28
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
29
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
30
- * Lesser General Public License for more details.
31
- *
32
- * You should have received a copy of the GNU Lesser General Public
33
- * License along with this library in the file COPYING.LIB;
34
- * if not, write to the Free Software Foundation, Inc.,
35
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
36
- */
37
-
38
- #include "pthread.h"
39
- #include "implement.h"
40
-
41
-
42
- int
43
- pthread_cond_init (pthread_cond_t * cond, const pthread_condattr_t * attr)
44
- /*
45
- * ------------------------------------------------------
46
- * DOCPUBLIC
47
- * This function initializes a condition variable.
48
- *
49
- * PARAMETERS
50
- * cond
51
- * pointer to an instance of pthread_cond_t
52
- *
53
- * attr
54
- * specifies optional creation attributes.
55
- *
56
- *
57
- * DESCRIPTION
58
- * This function initializes a condition variable.
59
- *
60
- * RESULTS
61
- * 0 successfully created condition variable,
62
- * EINVAL 'attr' is invalid,
63
- * EAGAIN insufficient resources (other than
64
- * memory,
65
- * ENOMEM insufficient memory,
66
- * EBUSY 'cond' is already initialized,
67
- *
68
- * ------------------------------------------------------
69
- */
70
- {
71
- int result;
72
- pthread_cond_t cv = NULL;
73
-
74
- if (cond == NULL)
75
- {
76
- return EINVAL;
77
- }
78
-
79
- if ((attr != NULL && *attr != NULL) &&
80
- ((*attr)->pshared == PTHREAD_PROCESS_SHARED))
81
- {
82
- /*
83
- * Creating condition variable that can be shared between
84
- * processes.
85
- */
86
- result = ENOSYS;
87
- goto DONE;
88
- }
89
-
90
- cv = (pthread_cond_t) calloc (1, sizeof (*cv));
91
-
92
- if (cv == NULL)
93
- {
94
- result = ENOMEM;
95
- goto DONE;
96
- }
97
-
98
- cv->nWaitersBlocked = 0;
99
- cv->nWaitersToUnblock = 0;
100
- cv->nWaitersGone = 0;
101
-
102
- if (sem_init (&(cv->semBlockLock), 0, 1) != 0)
103
- {
104
- result = errno;
105
- goto FAIL0;
106
- }
107
-
108
- if (sem_init (&(cv->semBlockQueue), 0, 0) != 0)
109
- {
110
- result = errno;
111
- goto FAIL1;
112
- }
113
-
114
- if ((result = pthread_mutex_init (&(cv->mtxUnblockLock), 0)) != 0)
115
- {
116
- goto FAIL2;
117
- }
118
-
119
- result = 0;
120
-
121
- goto DONE;
122
-
123
- /*
124
- * -------------
125
- * Failed...
126
- * -------------
127
- */
128
- FAIL2:
129
- (void) sem_destroy (&(cv->semBlockQueue));
130
-
131
- FAIL1:
132
- (void) sem_destroy (&(cv->semBlockLock));
133
-
134
- FAIL0:
135
- (void) free (cv);
136
- cv = NULL;
137
-
138
- DONE:
139
- if (0 == result)
140
- {
141
- ptw32_mcs_local_node_t node;
142
-
143
- ptw32_mcs_lock_acquire(&ptw32_cond_list_lock, &node);
144
-
145
- cv->next = NULL;
146
- cv->prev = ptw32_cond_list_tail;
147
-
148
- if (ptw32_cond_list_tail != NULL)
149
- {
150
- ptw32_cond_list_tail->next = cv;
151
- }
152
-
153
- ptw32_cond_list_tail = cv;
154
-
155
- if (ptw32_cond_list_head == NULL)
156
- {
157
- ptw32_cond_list_head = cv;
158
- }
159
-
160
- ptw32_mcs_lock_release(&node);
161
- }
162
-
163
- *cond = cv;
164
-
165
- return result;
166
-
167
- } /* pthread_cond_init */