noderb 0.0.2

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 (424) hide show
  1. data/LICENSE +19 -0
  2. data/README.md +25 -0
  3. data/ext/noderb_extension/extconf.rb +11 -0
  4. data/ext/noderb_extension/libuv/AUTHORS +11 -0
  5. data/ext/noderb_extension/libuv/LICENSE +48 -0
  6. data/ext/noderb_extension/libuv/Makefile +119 -0
  7. data/ext/noderb_extension/libuv/README +45 -0
  8. data/ext/noderb_extension/libuv/build/all.gyp +254 -0
  9. data/ext/noderb_extension/libuv/build/common.gypi +13 -0
  10. data/ext/noderb_extension/libuv/build/gyp_uv +43 -0
  11. data/ext/noderb_extension/libuv/config-mingw.mk +67 -0
  12. data/ext/noderb_extension/libuv/config-unix.mk +121 -0
  13. data/ext/noderb_extension/libuv/create-msvs-files.bat +14 -0
  14. data/ext/noderb_extension/libuv/deps/pthread-win32/ANNOUNCE +482 -0
  15. data/ext/noderb_extension/libuv/deps/pthread-win32/BUGS +141 -0
  16. data/ext/noderb_extension/libuv/deps/pthread-win32/Bmakefile +268 -0
  17. data/ext/noderb_extension/libuv/deps/pthread-win32/CONTRIBUTORS +140 -0
  18. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING +150 -0
  19. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING.LIB +504 -0
  20. data/ext/noderb_extension/libuv/deps/pthread-win32/ChangeLog +5194 -0
  21. data/ext/noderb_extension/libuv/deps/pthread-win32/FAQ +451 -0
  22. data/ext/noderb_extension/libuv/deps/pthread-win32/GNUmakefile +593 -0
  23. data/ext/noderb_extension/libuv/deps/pthread-win32/MAINTAINERS +4 -0
  24. data/ext/noderb_extension/libuv/deps/pthread-win32/Makefile +516 -0
  25. data/ext/noderb_extension/libuv/deps/pthread-win32/NEWS +1245 -0
  26. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile +24 -0
  27. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile.tests +260 -0
  28. data/ext/noderb_extension/libuv/deps/pthread-win32/PROGRESS +4 -0
  29. data/ext/noderb_extension/libuv/deps/pthread-win32/README +601 -0
  30. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Borland +57 -0
  31. data/ext/noderb_extension/libuv/deps/pthread-win32/README.CV +3036 -0
  32. data/ext/noderb_extension/libuv/deps/pthread-win32/README.NONPORTABLE +783 -0
  33. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Watcom +62 -0
  34. data/ext/noderb_extension/libuv/deps/pthread-win32/README.WinCE +6 -0
  35. data/ext/noderb_extension/libuv/deps/pthread-win32/TODO +7 -0
  36. data/ext/noderb_extension/libuv/deps/pthread-win32/WinCE-PORT +222 -0
  37. data/ext/noderb_extension/libuv/deps/pthread-win32/attr.c +53 -0
  38. data/ext/noderb_extension/libuv/deps/pthread-win32/autostatic.c +69 -0
  39. data/ext/noderb_extension/libuv/deps/pthread-win32/barrier.c +47 -0
  40. data/ext/noderb_extension/libuv/deps/pthread-win32/build/all.gyp +207 -0
  41. data/ext/noderb_extension/libuv/deps/pthread-win32/builddmc.bat +9 -0
  42. data/ext/noderb_extension/libuv/deps/pthread-win32/cancel.c +44 -0
  43. data/ext/noderb_extension/libuv/deps/pthread-win32/cleanup.c +148 -0
  44. data/ext/noderb_extension/libuv/deps/pthread-win32/condvar.c +50 -0
  45. data/ext/noderb_extension/libuv/deps/pthread-win32/config.h +153 -0
  46. data/ext/noderb_extension/libuv/deps/pthread-win32/context.h +74 -0
  47. data/ext/noderb_extension/libuv/deps/pthread-win32/create.c +308 -0
  48. data/ext/noderb_extension/libuv/deps/pthread-win32/dll.c +92 -0
  49. data/ext/noderb_extension/libuv/deps/pthread-win32/errno.c +94 -0
  50. data/ext/noderb_extension/libuv/deps/pthread-win32/exit.c +44 -0
  51. data/ext/noderb_extension/libuv/deps/pthread-win32/fork.c +39 -0
  52. data/ext/noderb_extension/libuv/deps/pthread-win32/global.c +107 -0
  53. data/ext/noderb_extension/libuv/deps/pthread-win32/implement.h +944 -0
  54. data/ext/noderb_extension/libuv/deps/pthread-win32/misc.c +50 -0
  55. data/ext/noderb_extension/libuv/deps/pthread-win32/mutex.c +62 -0
  56. data/ext/noderb_extension/libuv/deps/pthread-win32/need_errno.h +145 -0
  57. data/ext/noderb_extension/libuv/deps/pthread-win32/nonportable.c +47 -0
  58. data/ext/noderb_extension/libuv/deps/pthread-win32/private.c +54 -0
  59. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.c +66 -0
  60. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsp +142 -0
  61. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsw +29 -0
  62. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.h +1368 -0
  63. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_destroy.c +79 -0
  64. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getdetachstate.c +86 -0
  65. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getinheritsched.c +51 -0
  66. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedparam.c +52 -0
  67. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedpolicy.c +61 -0
  68. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getscope.c +54 -0
  69. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstackaddr.c +97 -0
  70. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstacksize.c +100 -0
  71. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_init.c +117 -0
  72. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setdetachstate.c +91 -0
  73. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setinheritsched.c +57 -0
  74. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedparam.c +63 -0
  75. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedpolicy.c +55 -0
  76. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setscope.c +62 -0
  77. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstackaddr.c +97 -0
  78. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstacksize.c +110 -0
  79. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_destroy.c +103 -0
  80. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_init.c +69 -0
  81. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_wait.c +104 -0
  82. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_destroy.c +83 -0
  83. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_getpshared.c +95 -0
  84. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_init.c +85 -0
  85. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_setpshared.c +119 -0
  86. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cancel.c +189 -0
  87. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_destroy.c +253 -0
  88. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_init.c +167 -0
  89. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_signal.c +231 -0
  90. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_wait.c +567 -0
  91. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_destroy.c +86 -0
  92. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_getpshared.c +97 -0
  93. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_init.c +87 -0
  94. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_setpshared.c +117 -0
  95. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_delay_np.c +172 -0
  96. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_detach.c +136 -0
  97. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_equal.c +76 -0
  98. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_exit.c +106 -0
  99. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getconcurrency.c +45 -0
  100. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getschedparam.c +75 -0
  101. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getspecific.c +87 -0
  102. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getunique_np.c +47 -0
  103. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getw32threadhandle_np.c +65 -0
  104. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_join.c +157 -0
  105. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_create.c +108 -0
  106. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_delete.c +125 -0
  107. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_kill.c +105 -0
  108. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_consistent.c +187 -0
  109. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_destroy.c +148 -0
  110. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_init.c +130 -0
  111. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_lock.c +269 -0
  112. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_timedlock.c +324 -0
  113. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_trylock.c +154 -0
  114. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_unlock.c +175 -0
  115. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_destroy.c +83 -0
  116. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getkind_np.c +44 -0
  117. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getpshared.c +95 -0
  118. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getrobust.c +113 -0
  119. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_gettype.c +56 -0
  120. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_init.c +86 -0
  121. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setkind_np.c +44 -0
  122. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setpshared.c +119 -0
  123. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setrobust.c +119 -0
  124. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_settype.c +143 -0
  125. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_num_processors_np.c +56 -0
  126. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_once.c +79 -0
  127. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_destroy.c +143 -0
  128. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_init.c +109 -0
  129. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_rdlock.c +102 -0
  130. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedrdlock.c +109 -0
  131. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedwrlock.c +139 -0
  132. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_tryrdlock.c +102 -0
  133. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_trywrlock.c +122 -0
  134. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_unlock.c +93 -0
  135. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_wrlock.c +133 -0
  136. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_destroy.c +84 -0
  137. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_getpshared.c +97 -0
  138. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_init.c +83 -0
  139. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_setpshared.c +120 -0
  140. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_self.c +141 -0
  141. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcancelstate.c +125 -0
  142. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcanceltype.c +126 -0
  143. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setconcurrency.c +53 -0
  144. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setschedparam.c +123 -0
  145. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setspecific.c +167 -0
  146. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_destroy.c +111 -0
  147. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_init.c +123 -0
  148. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_lock.c +80 -0
  149. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_trylock.c +77 -0
  150. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_unlock.c +71 -0
  151. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_testcancel.c +103 -0
  152. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_timechange_handler_np.c +108 -0
  153. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_win32_attach_detach_np.c +258 -0
  154. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_MCS_lock.c +278 -0
  155. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_callUserDestroyRoutines.c +232 -0
  156. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_calloc.c +56 -0
  157. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_cond_check_need_init.c +78 -0
  158. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_getprocessors.c +91 -0
  159. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_is_attr.c +47 -0
  160. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_mutex_check_need_init.c +92 -0
  161. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_new.c +94 -0
  162. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processInitialize.c +92 -0
  163. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processTerminate.c +105 -0
  164. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_relmillisecs.c +132 -0
  165. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_reuse.c +151 -0
  166. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_cancelwrwait.c +50 -0
  167. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_check_need_init.c +77 -0
  168. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_semwait.c +135 -0
  169. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_spinlock_check_need_init.c +78 -0
  170. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadDestroy.c +79 -0
  171. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadStart.c +357 -0
  172. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_throw.c +189 -0
  173. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_timespec.c +83 -0
  174. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocCreate.c +118 -0
  175. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocDestroy.c +114 -0
  176. data/ext/noderb_extension/libuv/deps/pthread-win32/rwlock.c +51 -0
  177. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.c +53 -0
  178. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.h +183 -0
  179. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_max.c +134 -0
  180. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_min.c +135 -0
  181. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_getscheduler.c +71 -0
  182. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_setscheduler.c +83 -0
  183. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_yield.c +71 -0
  184. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_close.c +58 -0
  185. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_destroy.c +144 -0
  186. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_getvalue.c +110 -0
  187. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_init.c +169 -0
  188. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_open.c +58 -0
  189. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post.c +128 -0
  190. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post_multiple.c +142 -0
  191. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_timedwait.c +238 -0
  192. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_trywait.c +117 -0
  193. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_unlink.c +58 -0
  194. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_wait.c +187 -0
  195. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.c +69 -0
  196. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.h +169 -0
  197. data/ext/noderb_extension/libuv/deps/pthread-win32/signal.c +179 -0
  198. data/ext/noderb_extension/libuv/deps/pthread-win32/spin.c +46 -0
  199. data/ext/noderb_extension/libuv/deps/pthread-win32/sync.c +43 -0
  200. data/ext/noderb_extension/libuv/deps/pthread-win32/tsd.c +44 -0
  201. data/ext/noderb_extension/libuv/deps/pthread-win32/version.rc +388 -0
  202. data/ext/noderb_extension/libuv/deps/pthread-win32/w32_CancelableWait.c +161 -0
  203. data/ext/noderb_extension/libuv/doc/desired-api.md +159 -0
  204. data/ext/noderb_extension/libuv/doc/iocp-links.html +574 -0
  205. data/ext/noderb_extension/libuv/include/ares.h +582 -0
  206. data/ext/noderb_extension/libuv/include/ares_version.h +24 -0
  207. data/ext/noderb_extension/libuv/include/eio.h +376 -0
  208. data/ext/noderb_extension/libuv/include/ev.h +835 -0
  209. data/ext/noderb_extension/libuv/include/ngx-queue.h +102 -0
  210. data/ext/noderb_extension/libuv/include/tree.h +762 -0
  211. data/ext/noderb_extension/libuv/include/uv-unix.h +138 -0
  212. data/ext/noderb_extension/libuv/include/uv-win.h +187 -0
  213. data/ext/noderb_extension/libuv/include/uv.h +635 -0
  214. data/ext/noderb_extension/libuv/src/ares/AUTHORS +37 -0
  215. data/ext/noderb_extension/libuv/src/ares/CHANGES +1198 -0
  216. data/ext/noderb_extension/libuv/src/ares/CMakeLists.txt +22 -0
  217. data/ext/noderb_extension/libuv/src/ares/NEWS +21 -0
  218. data/ext/noderb_extension/libuv/src/ares/README +60 -0
  219. data/ext/noderb_extension/libuv/src/ares/README.cares +13 -0
  220. data/ext/noderb_extension/libuv/src/ares/README.msvc +118 -0
  221. data/ext/noderb_extension/libuv/src/ares/README.node +21 -0
  222. data/ext/noderb_extension/libuv/src/ares/RELEASE-NOTES +25 -0
  223. data/ext/noderb_extension/libuv/src/ares/TODO +23 -0
  224. data/ext/noderb_extension/libuv/src/ares/ares__close_sockets.c +66 -0
  225. data/ext/noderb_extension/libuv/src/ares/ares__get_hostent.c +263 -0
  226. data/ext/noderb_extension/libuv/src/ares/ares__read_line.c +71 -0
  227. data/ext/noderb_extension/libuv/src/ares/ares__timeval.c +111 -0
  228. data/ext/noderb_extension/libuv/src/ares/ares_cancel.c +63 -0
  229. data/ext/noderb_extension/libuv/src/ares/ares_data.c +190 -0
  230. data/ext/noderb_extension/libuv/src/ares/ares_data.h +65 -0
  231. data/ext/noderb_extension/libuv/src/ares/ares_destroy.c +105 -0
  232. data/ext/noderb_extension/libuv/src/ares/ares_dns.h +90 -0
  233. data/ext/noderb_extension/libuv/src/ares/ares_expand_name.c +193 -0
  234. data/ext/noderb_extension/libuv/src/ares/ares_expand_string.c +75 -0
  235. data/ext/noderb_extension/libuv/src/ares/ares_fds.c +62 -0
  236. data/ext/noderb_extension/libuv/src/ares/ares_free_hostent.c +39 -0
  237. data/ext/noderb_extension/libuv/src/ares/ares_free_string.c +25 -0
  238. data/ext/noderb_extension/libuv/src/ares/ares_gethostbyaddr.c +292 -0
  239. data/ext/noderb_extension/libuv/src/ares/ares_gethostbyname.c +515 -0
  240. data/ext/noderb_extension/libuv/src/ares/ares_getnameinfo.c +426 -0
  241. data/ext/noderb_extension/libuv/src/ares/ares_getopt.c +122 -0
  242. data/ext/noderb_extension/libuv/src/ares/ares_getopt.h +53 -0
  243. data/ext/noderb_extension/libuv/src/ares/ares_getsock.c +72 -0
  244. data/ext/noderb_extension/libuv/src/ares/ares_init.c +1665 -0
  245. data/ext/noderb_extension/libuv/src/ares/ares_ipv6.h +78 -0
  246. data/ext/noderb_extension/libuv/src/ares/ares_library_init.c +132 -0
  247. data/ext/noderb_extension/libuv/src/ares/ares_library_init.h +39 -0
  248. data/ext/noderb_extension/libuv/src/ares/ares_llist.c +86 -0
  249. data/ext/noderb_extension/libuv/src/ares/ares_llist.h +42 -0
  250. data/ext/noderb_extension/libuv/src/ares/ares_mkquery.c +195 -0
  251. data/ext/noderb_extension/libuv/src/ares/ares_nowarn.c +59 -0
  252. data/ext/noderb_extension/libuv/src/ares/ares_nowarn.h +24 -0
  253. data/ext/noderb_extension/libuv/src/ares/ares_options.c +253 -0
  254. data/ext/noderb_extension/libuv/src/ares/ares_parse_a_reply.c +260 -0
  255. data/ext/noderb_extension/libuv/src/ares/ares_parse_aaaa_reply.c +256 -0
  256. data/ext/noderb_extension/libuv/src/ares/ares_parse_mx_reply.c +170 -0
  257. data/ext/noderb_extension/libuv/src/ares/ares_parse_ns_reply.c +182 -0
  258. data/ext/noderb_extension/libuv/src/ares/ares_parse_ptr_reply.c +208 -0
  259. data/ext/noderb_extension/libuv/src/ares/ares_parse_srv_reply.c +179 -0
  260. data/ext/noderb_extension/libuv/src/ares/ares_parse_txt_reply.c +201 -0
  261. data/ext/noderb_extension/libuv/src/ares/ares_private.h +351 -0
  262. data/ext/noderb_extension/libuv/src/ares/ares_process.c +1296 -0
  263. data/ext/noderb_extension/libuv/src/ares/ares_query.c +183 -0
  264. data/ext/noderb_extension/libuv/src/ares/ares_rules.h +144 -0
  265. data/ext/noderb_extension/libuv/src/ares/ares_search.c +322 -0
  266. data/ext/noderb_extension/libuv/src/ares/ares_send.c +134 -0
  267. data/ext/noderb_extension/libuv/src/ares/ares_setup.h +191 -0
  268. data/ext/noderb_extension/libuv/src/ares/ares_strcasecmp.c +66 -0
  269. data/ext/noderb_extension/libuv/src/ares/ares_strcasecmp.h +30 -0
  270. data/ext/noderb_extension/libuv/src/ares/ares_strdup.c +42 -0
  271. data/ext/noderb_extension/libuv/src/ares/ares_strdup.h +26 -0
  272. data/ext/noderb_extension/libuv/src/ares/ares_strerror.c +56 -0
  273. data/ext/noderb_extension/libuv/src/ares/ares_timeout.c +80 -0
  274. data/ext/noderb_extension/libuv/src/ares/ares_version.c +11 -0
  275. data/ext/noderb_extension/libuv/src/ares/ares_writev.c +79 -0
  276. data/ext/noderb_extension/libuv/src/ares/ares_writev.h +36 -0
  277. data/ext/noderb_extension/libuv/src/ares/bitncmp.c +59 -0
  278. data/ext/noderb_extension/libuv/src/ares/bitncmp.h +26 -0
  279. data/ext/noderb_extension/libuv/src/ares/config_cygwin/ares_config.h +510 -0
  280. data/ext/noderb_extension/libuv/src/ares/config_darwin/ares_config.h +510 -0
  281. data/ext/noderb_extension/libuv/src/ares/config_freebsd/ares_config.h +510 -0
  282. data/ext/noderb_extension/libuv/src/ares/config_linux/ares_config.h +510 -0
  283. data/ext/noderb_extension/libuv/src/ares/config_openbsd/ares_config.h +510 -0
  284. data/ext/noderb_extension/libuv/src/ares/config_sunos/ares_config.h +510 -0
  285. data/ext/noderb_extension/libuv/src/ares/config_win32/ares_config.h +369 -0
  286. data/ext/noderb_extension/libuv/src/ares/get_ver.awk +35 -0
  287. data/ext/noderb_extension/libuv/src/ares/inet_net_pton.c +450 -0
  288. data/ext/noderb_extension/libuv/src/ares/inet_net_pton.h +31 -0
  289. data/ext/noderb_extension/libuv/src/ares/inet_ntop.c +232 -0
  290. data/ext/noderb_extension/libuv/src/ares/inet_ntop.h +27 -0
  291. data/ext/noderb_extension/libuv/src/ares/nameser.h +193 -0
  292. data/ext/noderb_extension/libuv/src/ares/setup_once.h +488 -0
  293. data/ext/noderb_extension/libuv/src/ares/windows_port.c +22 -0
  294. data/ext/noderb_extension/libuv/src/eio/Changes +63 -0
  295. data/ext/noderb_extension/libuv/src/eio/LICENSE +36 -0
  296. data/ext/noderb_extension/libuv/src/eio/Makefile.am +15 -0
  297. data/ext/noderb_extension/libuv/src/eio/aclocal.m4 +8957 -0
  298. data/ext/noderb_extension/libuv/src/eio/autogen.sh +3 -0
  299. data/ext/noderb_extension/libuv/src/eio/config.h.in +86 -0
  300. data/ext/noderb_extension/libuv/src/eio/config_cygwin.h +77 -0
  301. data/ext/noderb_extension/libuv/src/eio/config_darwin.h +137 -0
  302. data/ext/noderb_extension/libuv/src/eio/config_freebsd.h +78 -0
  303. data/ext/noderb_extension/libuv/src/eio/config_linux.h +101 -0
  304. data/ext/noderb_extension/libuv/src/eio/config_sunos.h +81 -0
  305. data/ext/noderb_extension/libuv/src/eio/configure.ac +22 -0
  306. data/ext/noderb_extension/libuv/src/eio/demo.c +194 -0
  307. data/ext/noderb_extension/libuv/src/eio/ecb.h +370 -0
  308. data/ext/noderb_extension/libuv/src/eio/eio.3 +3428 -0
  309. data/ext/noderb_extension/libuv/src/eio/eio.c +2562 -0
  310. data/ext/noderb_extension/libuv/src/eio/eio.pod +969 -0
  311. data/ext/noderb_extension/libuv/src/eio/libeio.m4 +195 -0
  312. data/ext/noderb_extension/libuv/src/eio/xthread.h +164 -0
  313. data/ext/noderb_extension/libuv/src/ev/Changes +388 -0
  314. data/ext/noderb_extension/libuv/src/ev/LICENSE +36 -0
  315. data/ext/noderb_extension/libuv/src/ev/Makefile.am +18 -0
  316. data/ext/noderb_extension/libuv/src/ev/Makefile.in +771 -0
  317. data/ext/noderb_extension/libuv/src/ev/README +58 -0
  318. data/ext/noderb_extension/libuv/src/ev/aclocal.m4 +8957 -0
  319. data/ext/noderb_extension/libuv/src/ev/autogen.sh +6 -0
  320. data/ext/noderb_extension/libuv/src/ev/config.guess +1526 -0
  321. data/ext/noderb_extension/libuv/src/ev/config.h.in +125 -0
  322. data/ext/noderb_extension/libuv/src/ev/config.sub +1658 -0
  323. data/ext/noderb_extension/libuv/src/ev/config_cygwin.h +123 -0
  324. data/ext/noderb_extension/libuv/src/ev/config_darwin.h +122 -0
  325. data/ext/noderb_extension/libuv/src/ev/config_freebsd.h +120 -0
  326. data/ext/noderb_extension/libuv/src/ev/config_linux.h +130 -0
  327. data/ext/noderb_extension/libuv/src/ev/config_sunos.h +122 -0
  328. data/ext/noderb_extension/libuv/src/ev/configure +13037 -0
  329. data/ext/noderb_extension/libuv/src/ev/configure.ac +18 -0
  330. data/ext/noderb_extension/libuv/src/ev/depcomp +630 -0
  331. data/ext/noderb_extension/libuv/src/ev/ev++.h +816 -0
  332. data/ext/noderb_extension/libuv/src/ev/ev.3 +5311 -0
  333. data/ext/noderb_extension/libuv/src/ev/ev.c +3913 -0
  334. data/ext/noderb_extension/libuv/src/ev/ev.pod +5243 -0
  335. data/ext/noderb_extension/libuv/src/ev/ev_epoll.c +266 -0
  336. data/ext/noderb_extension/libuv/src/ev/ev_kqueue.c +198 -0
  337. data/ext/noderb_extension/libuv/src/ev/ev_poll.c +148 -0
  338. data/ext/noderb_extension/libuv/src/ev/ev_port.c +179 -0
  339. data/ext/noderb_extension/libuv/src/ev/ev_select.c +310 -0
  340. data/ext/noderb_extension/libuv/src/ev/ev_vars.h +203 -0
  341. data/ext/noderb_extension/libuv/src/ev/ev_win32.c +153 -0
  342. data/ext/noderb_extension/libuv/src/ev/ev_wrap.h +196 -0
  343. data/ext/noderb_extension/libuv/src/ev/event.c +402 -0
  344. data/ext/noderb_extension/libuv/src/ev/event.h +170 -0
  345. data/ext/noderb_extension/libuv/src/ev/install-sh +294 -0
  346. data/ext/noderb_extension/libuv/src/ev/libev.m4 +39 -0
  347. data/ext/noderb_extension/libuv/src/ev/ltmain.sh +8413 -0
  348. data/ext/noderb_extension/libuv/src/ev/missing +336 -0
  349. data/ext/noderb_extension/libuv/src/ev/mkinstalldirs +111 -0
  350. data/ext/noderb_extension/libuv/src/uv-common.c +172 -0
  351. data/ext/noderb_extension/libuv/src/uv-common.h +53 -0
  352. data/ext/noderb_extension/libuv/src/uv-cygwin.c +52 -0
  353. data/ext/noderb_extension/libuv/src/uv-darwin.c +64 -0
  354. data/ext/noderb_extension/libuv/src/uv-eio.c +113 -0
  355. data/ext/noderb_extension/libuv/src/uv-eio.h +13 -0
  356. data/ext/noderb_extension/libuv/src/uv-freebsd.c +65 -0
  357. data/ext/noderb_extension/libuv/src/uv-linux.c +51 -0
  358. data/ext/noderb_extension/libuv/src/uv-sunos.c +60 -0
  359. data/ext/noderb_extension/libuv/src/uv-unix.c +2408 -0
  360. data/ext/noderb_extension/libuv/src/win/async.c +129 -0
  361. data/ext/noderb_extension/libuv/src/win/cares.c +304 -0
  362. data/ext/noderb_extension/libuv/src/win/core.c +155 -0
  363. data/ext/noderb_extension/libuv/src/win/error.c +140 -0
  364. data/ext/noderb_extension/libuv/src/win/getaddrinfo.c +341 -0
  365. data/ext/noderb_extension/libuv/src/win/handle.c +176 -0
  366. data/ext/noderb_extension/libuv/src/win/internal.h +237 -0
  367. data/ext/noderb_extension/libuv/src/win/loop-watcher.c +128 -0
  368. data/ext/noderb_extension/libuv/src/win/pipe.c +828 -0
  369. data/ext/noderb_extension/libuv/src/win/process.c +936 -0
  370. data/ext/noderb_extension/libuv/src/win/req.c +141 -0
  371. data/ext/noderb_extension/libuv/src/win/stdio.c +75 -0
  372. data/ext/noderb_extension/libuv/src/win/stream.c +149 -0
  373. data/ext/noderb_extension/libuv/src/win/tcp.c +895 -0
  374. data/ext/noderb_extension/libuv/src/win/timer.c +269 -0
  375. data/ext/noderb_extension/libuv/src/win/util.c +82 -0
  376. data/ext/noderb_extension/libuv/test/benchmark-ares.c +117 -0
  377. data/ext/noderb_extension/libuv/test/benchmark-getaddrinfo.c +90 -0
  378. data/ext/noderb_extension/libuv/test/benchmark-list.h +77 -0
  379. data/ext/noderb_extension/libuv/test/benchmark-ping-pongs.c +210 -0
  380. data/ext/noderb_extension/libuv/test/benchmark-pound.c +237 -0
  381. data/ext/noderb_extension/libuv/test/benchmark-pump.c +459 -0
  382. data/ext/noderb_extension/libuv/test/benchmark-sizes.c +39 -0
  383. data/ext/noderb_extension/libuv/test/benchmark-spawn.c +154 -0
  384. data/ext/noderb_extension/libuv/test/dns-server.c +323 -0
  385. data/ext/noderb_extension/libuv/test/echo-server.c +299 -0
  386. data/ext/noderb_extension/libuv/test/run-benchmarks.c +64 -0
  387. data/ext/noderb_extension/libuv/test/run-tests.c +82 -0
  388. data/ext/noderb_extension/libuv/test/runner-unix.c +335 -0
  389. data/ext/noderb_extension/libuv/test/runner-unix.h +36 -0
  390. data/ext/noderb_extension/libuv/test/runner-win.c +343 -0
  391. data/ext/noderb_extension/libuv/test/runner-win.h +42 -0
  392. data/ext/noderb_extension/libuv/test/runner.c +311 -0
  393. data/ext/noderb_extension/libuv/test/runner.h +155 -0
  394. data/ext/noderb_extension/libuv/test/task.h +111 -0
  395. data/ext/noderb_extension/libuv/test/test-async.c +218 -0
  396. data/ext/noderb_extension/libuv/test/test-callback-stack.c +205 -0
  397. data/ext/noderb_extension/libuv/test/test-connection-fail.c +149 -0
  398. data/ext/noderb_extension/libuv/test/test-delayed-accept.c +198 -0
  399. data/ext/noderb_extension/libuv/test/test-fail-always.c +29 -0
  400. data/ext/noderb_extension/libuv/test/test-get-currentexe.c +53 -0
  401. data/ext/noderb_extension/libuv/test/test-getaddrinfo.c +110 -0
  402. data/ext/noderb_extension/libuv/test/test-gethostbyname.c +192 -0
  403. data/ext/noderb_extension/libuv/test/test-getsockname.c +196 -0
  404. data/ext/noderb_extension/libuv/test/test-hrtime.c +51 -0
  405. data/ext/noderb_extension/libuv/test/test-idle.c +83 -0
  406. data/ext/noderb_extension/libuv/test/test-list.h +165 -0
  407. data/ext/noderb_extension/libuv/test/test-loop-handles.c +361 -0
  408. data/ext/noderb_extension/libuv/test/test-pass-always.c +28 -0
  409. data/ext/noderb_extension/libuv/test/test-ping-pong.c +256 -0
  410. data/ext/noderb_extension/libuv/test/test-pipe-bind-error.c +148 -0
  411. data/ext/noderb_extension/libuv/test/test-ref.c +91 -0
  412. data/ext/noderb_extension/libuv/test/test-shutdown-eof.c +183 -0
  413. data/ext/noderb_extension/libuv/test/test-spawn.c +345 -0
  414. data/ext/noderb_extension/libuv/test/test-tcp-bind-error.c +204 -0
  415. data/ext/noderb_extension/libuv/test/test-tcp-bind6-error.c +164 -0
  416. data/ext/noderb_extension/libuv/test/test-tcp-writealot.c +198 -0
  417. data/ext/noderb_extension/libuv/test/test-timer-again.c +141 -0
  418. data/ext/noderb_extension/libuv/test/test-timer.c +134 -0
  419. data/ext/noderb_extension/noderb.c +340 -0
  420. data/ext/noderb_extension/noderb.h +2 -0
  421. data/lib/noderb/connection.rb +21 -0
  422. data/lib/noderb/process.rb +17 -0
  423. data/lib/noderb.rb +25 -0
  424. metadata +470 -0
@@ -0,0 +1,103 @@
1
+ /*
2
+ * pthread_barrier_destroy.c
3
+ *
4
+ * Description:
5
+ * This translation unit implements barrier primitives.
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
+
40
+ int
41
+ pthread_barrier_destroy (pthread_barrier_t * barrier)
42
+ {
43
+ int result = 0;
44
+ pthread_barrier_t b;
45
+ ptw32_mcs_local_node_t node;
46
+
47
+ if (barrier == NULL || *barrier == (pthread_barrier_t) PTW32_OBJECT_INVALID)
48
+ {
49
+ return EINVAL;
50
+ }
51
+
52
+ if (0 != ptw32_mcs_lock_try_acquire(&(*barrier)->lock, &node))
53
+ {
54
+ return EBUSY;
55
+ }
56
+
57
+ b = *barrier;
58
+
59
+ if (b->nCurrentBarrierHeight < b->nInitialBarrierHeight)
60
+ {
61
+ result = EBUSY;
62
+ }
63
+ else
64
+ {
65
+ if (0 == (result = sem_destroy (&(b->semBarrierBreeched))))
66
+ {
67
+ *barrier = (pthread_barrier_t) PTW32_OBJECT_INVALID;
68
+ /*
69
+ * Release the lock before freeing b.
70
+ *
71
+ * FIXME: There may be successors which, when we release the lock,
72
+ * will be linked into b->lock, which will be corrupted at some
73
+ * point with undefined results for the application. To fix this
74
+ * will require changing pthread_barrier_t from a pointer to
75
+ * pthread_barrier_t_ to an instance. This is a change to the ABI
76
+ * and will require a major version number increment.
77
+ */
78
+ ptw32_mcs_lock_release(&node);
79
+ (void) free (b);
80
+ return 0;
81
+ }
82
+ else
83
+ {
84
+ /*
85
+ * This should not ever be reached.
86
+ * Restore the barrier to working condition before returning.
87
+ */
88
+ (void) sem_init (&(b->semBarrierBreeched), b->pshared, 0);
89
+ }
90
+
91
+ if (result != 0)
92
+ {
93
+ /*
94
+ * The barrier still exists and is valid
95
+ * in the event of any error above.
96
+ */
97
+ result = EBUSY;
98
+ }
99
+ }
100
+
101
+ ptw32_mcs_lock_release(&node);
102
+ return (result);
103
+ }
@@ -0,0 +1,69 @@
1
+ /*
2
+ * pthread_barrier_init.c
3
+ *
4
+ * Description:
5
+ * This translation unit implements barrier primitives.
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
+
40
+
41
+ int
42
+ pthread_barrier_init (pthread_barrier_t * barrier,
43
+ const pthread_barrierattr_t * attr, unsigned int count)
44
+ {
45
+ pthread_barrier_t b;
46
+
47
+ if (barrier == NULL || count == 0)
48
+ {
49
+ return EINVAL;
50
+ }
51
+
52
+ if (NULL != (b = (pthread_barrier_t) calloc (1, sizeof (*b))))
53
+ {
54
+ b->pshared = (attr != NULL && *attr != NULL
55
+ ? (*attr)->pshared : PTHREAD_PROCESS_PRIVATE);
56
+
57
+ b->nCurrentBarrierHeight = b->nInitialBarrierHeight = count;
58
+ b->lock = 0;
59
+
60
+ if (0 == sem_init (&(b->semBarrierBreeched), b->pshared, 0))
61
+ {
62
+ *barrier = b;
63
+ return 0;
64
+ }
65
+ (void) free (b);
66
+ }
67
+
68
+ return ENOMEM;
69
+ }
@@ -0,0 +1,104 @@
1
+ /*
2
+ * pthread_barrier_wait.c
3
+ *
4
+ * Description:
5
+ * This translation unit implements barrier primitives.
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
+
40
+
41
+ int
42
+ pthread_barrier_wait (pthread_barrier_t * barrier)
43
+ {
44
+ int result;
45
+ pthread_barrier_t b;
46
+
47
+ ptw32_mcs_local_node_t node;
48
+
49
+ if (barrier == NULL || *barrier == (pthread_barrier_t) PTW32_OBJECT_INVALID)
50
+ {
51
+ return EINVAL;
52
+ }
53
+
54
+ ptw32_mcs_lock_acquire(&(*barrier)->lock, &node);
55
+
56
+ b = *barrier;
57
+ if (--b->nCurrentBarrierHeight == 0)
58
+ {
59
+ /*
60
+ * We are the last thread to arrive at the barrier before it releases us.
61
+ * Move our MCS local node to the global scope barrier handle so that the
62
+ * last thread out (not necessarily us) can release the lock.
63
+ */
64
+ ptw32_mcs_node_transfer(&b->proxynode, &node);
65
+
66
+ /*
67
+ * Any threads that have not quite entered sem_wait below when the
68
+ * multiple_post has completed will nevertheless continue through
69
+ * the semaphore (barrier).
70
+ */
71
+ result = (b->nInitialBarrierHeight > 1
72
+ ? sem_post_multiple (&(b->semBarrierBreeched),
73
+ b->nInitialBarrierHeight - 1) : 0);
74
+ }
75
+ else
76
+ {
77
+ ptw32_mcs_lock_release(&node);
78
+ /*
79
+ * Use the non-cancelable version of sem_wait().
80
+ *
81
+ * It is possible that all nInitialBarrierHeight-1 threads are
82
+ * at this point when the last thread enters the barrier, resets
83
+ * nCurrentBarrierHeight = nInitialBarrierHeight and leaves.
84
+ * If pthread_barrier_destroy is called at that moment then the
85
+ * barrier will be destroyed along with the semas.
86
+ */
87
+ result = ptw32_semwait (&(b->semBarrierBreeched));
88
+ }
89
+
90
+ if ((PTW32_INTERLOCKED_LONG)PTW32_INTERLOCKED_INCREMENT_LONG((PTW32_INTERLOCKED_LONGPTR)&b->nCurrentBarrierHeight)
91
+ == (PTW32_INTERLOCKED_LONG)b->nInitialBarrierHeight)
92
+ {
93
+ /*
94
+ * We are the last thread to cross this barrier
95
+ */
96
+ ptw32_mcs_lock_release(&b->proxynode);
97
+ if (0 == result)
98
+ {
99
+ result = PTHREAD_BARRIER_SERIAL_THREAD;
100
+ }
101
+ }
102
+
103
+ return (result);
104
+ }
@@ -0,0 +1,83 @@
1
+ /*
2
+ * pthread_barrier_attr_destroy.c
3
+ *
4
+ * Description:
5
+ * This translation unit implements barrier primitives.
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
+
40
+
41
+ int
42
+ pthread_barrierattr_destroy (pthread_barrierattr_t * attr)
43
+ /*
44
+ * ------------------------------------------------------
45
+ * DOCPUBLIC
46
+ * Destroys a barrier attributes object. The object can
47
+ * no longer be used.
48
+ *
49
+ * PARAMETERS
50
+ * attr
51
+ * pointer to an instance of pthread_barrierattr_t
52
+ *
53
+ *
54
+ * DESCRIPTION
55
+ * Destroys a barrier attributes object. The object can
56
+ * no longer be used.
57
+ *
58
+ * NOTES:
59
+ * 1) Does not affect barrieres created using 'attr'
60
+ *
61
+ * RESULTS
62
+ * 0 successfully released attr,
63
+ * EINVAL 'attr' is invalid.
64
+ *
65
+ * ------------------------------------------------------
66
+ */
67
+ {
68
+ int result = 0;
69
+
70
+ if (attr == NULL || *attr == NULL)
71
+ {
72
+ result = EINVAL;
73
+ }
74
+ else
75
+ {
76
+ pthread_barrierattr_t ba = *attr;
77
+
78
+ *attr = NULL;
79
+ free (ba);
80
+ }
81
+
82
+ return (result);
83
+ } /* pthread_barrierattr_destroy */
@@ -0,0 +1,95 @@
1
+ /*
2
+ * pthread_barrier_attr_getpshared.c
3
+ *
4
+ * Description:
5
+ * This translation unit implements barrier primitives.
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
+
40
+
41
+ int
42
+ pthread_barrierattr_getpshared (const pthread_barrierattr_t * attr,
43
+ int *pshared)
44
+ /*
45
+ * ------------------------------------------------------
46
+ * DOCPUBLIC
47
+ * Determine whether barriers created with 'attr' can be
48
+ * shared between processes.
49
+ *
50
+ * PARAMETERS
51
+ * attr
52
+ * pointer to an instance of pthread_barrierattr_t
53
+ *
54
+ * pshared
55
+ * will be set to one of:
56
+ *
57
+ * PTHREAD_PROCESS_SHARED
58
+ * May be shared if in shared memory
59
+ *
60
+ * PTHREAD_PROCESS_PRIVATE
61
+ * Cannot be shared.
62
+ *
63
+ *
64
+ * DESCRIPTION
65
+ * Mutexes creatd with 'attr' can be shared between
66
+ * processes if pthread_barrier_t variable is allocated
67
+ * in memory shared by these processes.
68
+ * NOTES:
69
+ * 1) pshared barriers MUST be allocated in shared
70
+ * memory.
71
+ * 2) The following macro is defined if shared barriers
72
+ * are supported:
73
+ * _POSIX_THREAD_PROCESS_SHARED
74
+ *
75
+ * RESULTS
76
+ * 0 successfully retrieved attribute,
77
+ * EINVAL 'attr' is invalid,
78
+ *
79
+ * ------------------------------------------------------
80
+ */
81
+ {
82
+ int result;
83
+
84
+ if ((attr != NULL && *attr != NULL) && (pshared != NULL))
85
+ {
86
+ *pshared = (*attr)->pshared;
87
+ result = 0;
88
+ }
89
+ else
90
+ {
91
+ result = EINVAL;
92
+ }
93
+
94
+ return (result);
95
+ } /* pthread_barrierattr_getpshared */
@@ -0,0 +1,85 @@
1
+ /*
2
+ * pthread_barrier_attr_init.c
3
+ *
4
+ * Description:
5
+ * This translation unit implements barrier primitives.
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
+
40
+
41
+ int
42
+ pthread_barrierattr_init (pthread_barrierattr_t * attr)
43
+ /*
44
+ * ------------------------------------------------------
45
+ * DOCPUBLIC
46
+ * Initializes a barrier attributes object with default
47
+ * attributes.
48
+ *
49
+ * PARAMETERS
50
+ * attr
51
+ * pointer to an instance of pthread_barrierattr_t
52
+ *
53
+ *
54
+ * DESCRIPTION
55
+ * Initializes a barrier attributes object with default
56
+ * attributes.
57
+ *
58
+ * NOTES:
59
+ * 1) Used to define barrier types
60
+ *
61
+ * RESULTS
62
+ * 0 successfully initialized attr,
63
+ * ENOMEM insufficient memory for attr.
64
+ *
65
+ * ------------------------------------------------------
66
+ */
67
+ {
68
+ pthread_barrierattr_t ba;
69
+ int result = 0;
70
+
71
+ ba = (pthread_barrierattr_t) calloc (1, sizeof (*ba));
72
+
73
+ if (ba == NULL)
74
+ {
75
+ result = ENOMEM;
76
+ }
77
+ else
78
+ {
79
+ ba->pshared = PTHREAD_PROCESS_PRIVATE;
80
+ }
81
+
82
+ *attr = ba;
83
+
84
+ return (result);
85
+ } /* pthread_barrierattr_init */
@@ -0,0 +1,119 @@
1
+ /*
2
+ * pthread_barrier_attr_setpshared.c
3
+ *
4
+ * Description:
5
+ * This translation unit implements barrier primitives.
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
+
40
+
41
+ int
42
+ pthread_barrierattr_setpshared (pthread_barrierattr_t * attr, int pshared)
43
+ /*
44
+ * ------------------------------------------------------
45
+ * DOCPUBLIC
46
+ * Barriers created with 'attr' can be shared between
47
+ * processes if pthread_barrier_t variable is allocated
48
+ * in memory shared by these processes.
49
+ *
50
+ * PARAMETERS
51
+ * attr
52
+ * pointer to an instance of pthread_barrierattr_t
53
+ *
54
+ * pshared
55
+ * must be one of:
56
+ *
57
+ * PTHREAD_PROCESS_SHARED
58
+ * May be shared if in shared memory
59
+ *
60
+ * PTHREAD_PROCESS_PRIVATE
61
+ * Cannot be shared.
62
+ *
63
+ * DESCRIPTION
64
+ * Mutexes creatd with 'attr' can be shared between
65
+ * processes if pthread_barrier_t variable is allocated
66
+ * in memory shared by these processes.
67
+ *
68
+ * NOTES:
69
+ * 1) pshared barriers MUST be allocated in shared
70
+ * memory.
71
+ *
72
+ * 2) The following macro is defined if shared barriers
73
+ * are supported:
74
+ * _POSIX_THREAD_PROCESS_SHARED
75
+ *
76
+ * RESULTS
77
+ * 0 successfully set attribute,
78
+ * EINVAL 'attr' or pshared is invalid,
79
+ * ENOSYS PTHREAD_PROCESS_SHARED not supported,
80
+ *
81
+ * ------------------------------------------------------
82
+ */
83
+ {
84
+ int result;
85
+
86
+ if ((attr != NULL && *attr != NULL) &&
87
+ ((pshared == PTHREAD_PROCESS_SHARED) ||
88
+ (pshared == PTHREAD_PROCESS_PRIVATE)))
89
+ {
90
+ if (pshared == PTHREAD_PROCESS_SHARED)
91
+ {
92
+
93
+ #if !defined( _POSIX_THREAD_PROCESS_SHARED )
94
+
95
+ result = ENOSYS;
96
+ pshared = PTHREAD_PROCESS_PRIVATE;
97
+
98
+ #else
99
+
100
+ result = 0;
101
+
102
+ #endif /* _POSIX_THREAD_PROCESS_SHARED */
103
+
104
+ }
105
+ else
106
+ {
107
+ result = 0;
108
+ }
109
+
110
+ (*attr)->pshared = pshared;
111
+ }
112
+ else
113
+ {
114
+ result = EINVAL;
115
+ }
116
+
117
+ return (result);
118
+
119
+ } /* pthread_barrierattr_setpshared */