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,238 @@
1
+ /*
2
+ * -------------------------------------------------------------
3
+ *
4
+ * Module: sem_timedwait.c
5
+ *
6
+ * Purpose:
7
+ * Semaphores aren't actually part of the PThreads standard.
8
+ * They are defined by the POSIX Standard:
9
+ *
10
+ * POSIX 1003.1b-1993 (POSIX.1b)
11
+ *
12
+ * -------------------------------------------------------------
13
+ *
14
+ * --------------------------------------------------------------------------
15
+ *
16
+ * Pthreads-win32 - POSIX Threads Library for Win32
17
+ * Copyright(C) 1998 John E. Bossom
18
+ * Copyright(C) 1999,2005 Pthreads-win32 contributors
19
+ *
20
+ * Contact Email: rpj@callisto.canberra.edu.au
21
+ *
22
+ * The current list of contributors is contained
23
+ * in the file CONTRIBUTORS included with the source
24
+ * code distribution. The list can also be seen at the
25
+ * following World Wide Web location:
26
+ * http://sources.redhat.com/pthreads-win32/contributors.html
27
+ *
28
+ * This library is free software; you can redistribute it and/or
29
+ * modify it under the terms of the GNU Lesser General Public
30
+ * License as published by the Free Software Foundation; either
31
+ * version 2 of the License, or (at your option) any later version.
32
+ *
33
+ * This library is distributed in the hope that it will be useful,
34
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
35
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
36
+ * Lesser General Public License for more details.
37
+ *
38
+ * You should have received a copy of the GNU Lesser General Public
39
+ * License along with this library in the file COPYING.LIB;
40
+ * if not, write to the Free Software Foundation, Inc.,
41
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
42
+ */
43
+
44
+ #include "pthread.h"
45
+ #include "semaphore.h"
46
+ #include "implement.h"
47
+
48
+
49
+ typedef struct {
50
+ sem_t sem;
51
+ int * resultPtr;
52
+ } sem_timedwait_cleanup_args_t;
53
+
54
+
55
+ static void PTW32_CDECL
56
+ ptw32_sem_timedwait_cleanup (void * args)
57
+ {
58
+ sem_timedwait_cleanup_args_t * a = (sem_timedwait_cleanup_args_t *)args;
59
+ sem_t s = a->sem;
60
+
61
+ if (pthread_mutex_lock (&s->lock) == 0)
62
+ {
63
+ /*
64
+ * We either timed out or were cancelled.
65
+ * If someone has posted between then and now we try to take the semaphore.
66
+ * Otherwise the semaphore count may be wrong after we
67
+ * return. In the case of a cancellation, it is as if we
68
+ * were cancelled just before we return (after taking the semaphore)
69
+ * which is ok.
70
+ */
71
+ if (WaitForSingleObject(s->sem, 0) == WAIT_OBJECT_0)
72
+ {
73
+ /* We got the semaphore on the second attempt */
74
+ *(a->resultPtr) = 0;
75
+ }
76
+ else
77
+ {
78
+ /* Indicate we're no longer waiting */
79
+ s->value++;
80
+ #if defined(NEED_SEM)
81
+ if (s->value > 0)
82
+ {
83
+ s->leftToUnblock = 0;
84
+ }
85
+ #else
86
+ /*
87
+ * Don't release the W32 sema, it doesn't need adjustment
88
+ * because it doesn't record the number of waiters.
89
+ */
90
+ #endif
91
+ }
92
+ (void) pthread_mutex_unlock (&s->lock);
93
+ }
94
+ }
95
+
96
+
97
+ int
98
+ sem_timedwait (sem_t * sem, const struct timespec *abstime)
99
+ /*
100
+ * ------------------------------------------------------
101
+ * DOCPUBLIC
102
+ * This function waits on a semaphore possibly until
103
+ * 'abstime' time.
104
+ *
105
+ * PARAMETERS
106
+ * sem
107
+ * pointer to an instance of sem_t
108
+ *
109
+ * abstime
110
+ * pointer to an instance of struct timespec
111
+ *
112
+ * DESCRIPTION
113
+ * This function waits on a semaphore. If the
114
+ * semaphore value is greater than zero, it decreases
115
+ * its value by one. If the semaphore value is zero, then
116
+ * the calling thread (or process) is blocked until it can
117
+ * successfully decrease the value or until interrupted by
118
+ * a signal.
119
+ *
120
+ * If 'abstime' is a NULL pointer then this function will
121
+ * block until it can successfully decrease the value or
122
+ * until interrupted by a signal.
123
+ *
124
+ * RESULTS
125
+ * 0 successfully decreased semaphore,
126
+ * -1 failed, error in errno
127
+ * ERRNO
128
+ * EINVAL 'sem' is not a valid semaphore,
129
+ * ENOSYS semaphores are not supported,
130
+ * EINTR the function was interrupted by a signal,
131
+ * EDEADLK a deadlock condition was detected.
132
+ * ETIMEDOUT abstime elapsed before success.
133
+ *
134
+ * ------------------------------------------------------
135
+ */
136
+ {
137
+ int result = 0;
138
+ sem_t s = *sem;
139
+
140
+ pthread_testcancel();
141
+
142
+ if (sem == NULL)
143
+ {
144
+ result = EINVAL;
145
+ }
146
+ else
147
+ {
148
+ DWORD milliseconds;
149
+
150
+ if (abstime == NULL)
151
+ {
152
+ milliseconds = INFINITE;
153
+ }
154
+ else
155
+ {
156
+ /*
157
+ * Calculate timeout as milliseconds from current system time.
158
+ */
159
+ milliseconds = ptw32_relmillisecs (abstime);
160
+ }
161
+
162
+ if ((result = pthread_mutex_lock (&s->lock)) == 0)
163
+ {
164
+ int v;
165
+
166
+ /* See sem_destroy.c
167
+ */
168
+ if (*sem == NULL)
169
+ {
170
+ (void) pthread_mutex_unlock (&s->lock);
171
+ errno = EINVAL;
172
+ return -1;
173
+ }
174
+
175
+ v = --s->value;
176
+ (void) pthread_mutex_unlock (&s->lock);
177
+
178
+ if (v < 0)
179
+ {
180
+ #if defined(NEED_SEM)
181
+ int timedout;
182
+ #endif
183
+ sem_timedwait_cleanup_args_t cleanup_args;
184
+
185
+ cleanup_args.sem = s;
186
+ cleanup_args.resultPtr = &result;
187
+
188
+ #if defined(_MSC_VER) && _MSC_VER < 1400
189
+ #pragma inline_depth(0)
190
+ #endif
191
+ /* Must wait */
192
+ pthread_cleanup_push(ptw32_sem_timedwait_cleanup, (void *) &cleanup_args);
193
+ #if defined(NEED_SEM)
194
+ timedout =
195
+ #endif
196
+ result = pthreadCancelableTimedWait (s->sem, milliseconds);
197
+ pthread_cleanup_pop(result);
198
+ #if defined(_MSC_VER) && _MSC_VER < 1400
199
+ #pragma inline_depth()
200
+ #endif
201
+
202
+ #if defined(NEED_SEM)
203
+
204
+ if (!timedout && pthread_mutex_lock (&s->lock) == 0)
205
+ {
206
+ if (*sem == NULL)
207
+ {
208
+ (void) pthread_mutex_unlock (&s->lock);
209
+ errno = EINVAL;
210
+ return -1;
211
+ }
212
+
213
+ if (s->leftToUnblock > 0)
214
+ {
215
+ --s->leftToUnblock;
216
+ SetEvent(s->sem);
217
+ }
218
+ (void) pthread_mutex_unlock (&s->lock);
219
+ }
220
+
221
+ #endif /* NEED_SEM */
222
+
223
+ }
224
+ }
225
+
226
+ }
227
+
228
+ if (result != 0)
229
+ {
230
+
231
+ errno = result;
232
+ return -1;
233
+
234
+ }
235
+
236
+ return 0;
237
+
238
+ } /* sem_timedwait */
@@ -0,0 +1,117 @@
1
+ /*
2
+ * -------------------------------------------------------------
3
+ *
4
+ * Module: sem_trywait.c
5
+ *
6
+ * Purpose:
7
+ * Semaphores aren't actually part of the PThreads standard.
8
+ * They are defined by the POSIX Standard:
9
+ *
10
+ * POSIX 1003.1b-1993 (POSIX.1b)
11
+ *
12
+ * -------------------------------------------------------------
13
+ *
14
+ * --------------------------------------------------------------------------
15
+ *
16
+ * Pthreads-win32 - POSIX Threads Library for Win32
17
+ * Copyright(C) 1998 John E. Bossom
18
+ * Copyright(C) 1999,2005 Pthreads-win32 contributors
19
+ *
20
+ * Contact Email: rpj@callisto.canberra.edu.au
21
+ *
22
+ * The current list of contributors is contained
23
+ * in the file CONTRIBUTORS included with the source
24
+ * code distribution. The list can also be seen at the
25
+ * following World Wide Web location:
26
+ * http://sources.redhat.com/pthreads-win32/contributors.html
27
+ *
28
+ * This library is free software; you can redistribute it and/or
29
+ * modify it under the terms of the GNU Lesser General Public
30
+ * License as published by the Free Software Foundation; either
31
+ * version 2 of the License, or (at your option) any later version.
32
+ *
33
+ * This library is distributed in the hope that it will be useful,
34
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
35
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
36
+ * Lesser General Public License for more details.
37
+ *
38
+ * You should have received a copy of the GNU Lesser General Public
39
+ * License along with this library in the file COPYING.LIB;
40
+ * if not, write to the Free Software Foundation, Inc.,
41
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
42
+ */
43
+
44
+ #include "pthread.h"
45
+ #include "semaphore.h"
46
+ #include "implement.h"
47
+
48
+
49
+ int
50
+ sem_trywait (sem_t * sem)
51
+ /*
52
+ * ------------------------------------------------------
53
+ * DOCPUBLIC
54
+ * This function tries to wait on a semaphore.
55
+ *
56
+ * PARAMETERS
57
+ * sem
58
+ * pointer to an instance of sem_t
59
+ *
60
+ * DESCRIPTION
61
+ * This function tries to wait on a semaphore. If the
62
+ * semaphore value is greater than zero, it decreases
63
+ * its value by one. If the semaphore value is zero, then
64
+ * this function returns immediately with the error EAGAIN
65
+ *
66
+ * RESULTS
67
+ * 0 successfully decreased semaphore,
68
+ * -1 failed, error in errno
69
+ * ERRNO
70
+ * EAGAIN the semaphore was already locked,
71
+ * EINVAL 'sem' is not a valid semaphore,
72
+ * ENOTSUP sem_trywait is not supported,
73
+ * EINTR the function was interrupted by a signal,
74
+ * EDEADLK a deadlock condition was detected.
75
+ *
76
+ * ------------------------------------------------------
77
+ */
78
+ {
79
+ int result = 0;
80
+ sem_t s = *sem;
81
+
82
+ if (s == NULL)
83
+ {
84
+ result = EINVAL;
85
+ }
86
+ else if ((result = pthread_mutex_lock (&s->lock)) == 0)
87
+ {
88
+ /* See sem_destroy.c
89
+ */
90
+ if (*sem == NULL)
91
+ {
92
+ (void) pthread_mutex_unlock (&s->lock);
93
+ errno = EINVAL;
94
+ return -1;
95
+ }
96
+
97
+ if (s->value > 0)
98
+ {
99
+ s->value--;
100
+ }
101
+ else
102
+ {
103
+ result = EAGAIN;
104
+ }
105
+
106
+ (void) pthread_mutex_unlock (&s->lock);
107
+ }
108
+
109
+ if (result != 0)
110
+ {
111
+ errno = result;
112
+ return -1;
113
+ }
114
+
115
+ return 0;
116
+
117
+ } /* sem_trywait */
@@ -0,0 +1,58 @@
1
+ /*
2
+ * -------------------------------------------------------------
3
+ *
4
+ * Module: sem_unlink.c
5
+ *
6
+ * Purpose:
7
+ * Semaphores aren't actually part of the PThreads standard.
8
+ * They are defined by the POSIX Standard:
9
+ *
10
+ * POSIX 1003.1b-1993 (POSIX.1b)
11
+ *
12
+ * -------------------------------------------------------------
13
+ *
14
+ * --------------------------------------------------------------------------
15
+ *
16
+ * Pthreads-win32 - POSIX Threads Library for Win32
17
+ * Copyright(C) 1998 John E. Bossom
18
+ * Copyright(C) 1999,2005 Pthreads-win32 contributors
19
+ *
20
+ * Contact Email: rpj@callisto.canberra.edu.au
21
+ *
22
+ * The current list of contributors is contained
23
+ * in the file CONTRIBUTORS included with the source
24
+ * code distribution. The list can also be seen at the
25
+ * following World Wide Web location:
26
+ * http://sources.redhat.com/pthreads-win32/contributors.html
27
+ *
28
+ * This library is free software; you can redistribute it and/or
29
+ * modify it under the terms of the GNU Lesser General Public
30
+ * License as published by the Free Software Foundation; either
31
+ * version 2 of the License, or (at your option) any later version.
32
+ *
33
+ * This library is distributed in the hope that it will be useful,
34
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
35
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
36
+ * Lesser General Public License for more details.
37
+ *
38
+ * You should have received a copy of the GNU Lesser General Public
39
+ * License along with this library in the file COPYING.LIB;
40
+ * if not, write to the Free Software Foundation, Inc.,
41
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
42
+ */
43
+
44
+ #include "pthread.h"
45
+ #include "semaphore.h"
46
+ #include "implement.h"
47
+
48
+ /* ignore warning "unreferenced formal parameter" */
49
+ #if defined(_MSC_VER)
50
+ #pragma warning( disable : 4100 )
51
+ #endif
52
+
53
+ int
54
+ sem_unlink (const char *name)
55
+ {
56
+ errno = ENOSYS;
57
+ return -1;
58
+ } /* sem_unlink */
@@ -0,0 +1,187 @@
1
+ /*
2
+ * -------------------------------------------------------------
3
+ *
4
+ * Module: sem_wait.c
5
+ *
6
+ * Purpose:
7
+ * Semaphores aren't actually part of the PThreads standard.
8
+ * They are defined by the POSIX Standard:
9
+ *
10
+ * POSIX 1003.1b-1993 (POSIX.1b)
11
+ *
12
+ * -------------------------------------------------------------
13
+ *
14
+ * --------------------------------------------------------------------------
15
+ *
16
+ * Pthreads-win32 - POSIX Threads Library for Win32
17
+ * Copyright(C) 1998 John E. Bossom
18
+ * Copyright(C) 1999,2005 Pthreads-win32 contributors
19
+ *
20
+ * Contact Email: rpj@callisto.canberra.edu.au
21
+ *
22
+ * The current list of contributors is contained
23
+ * in the file CONTRIBUTORS included with the source
24
+ * code distribution. The list can also be seen at the
25
+ * following World Wide Web location:
26
+ * http://sources.redhat.com/pthreads-win32/contributors.html
27
+ *
28
+ * This library is free software; you can redistribute it and/or
29
+ * modify it under the terms of the GNU Lesser General Public
30
+ * License as published by the Free Software Foundation; either
31
+ * version 2 of the License, or (at your option) any later version.
32
+ *
33
+ * This library is distributed in the hope that it will be useful,
34
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
35
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
36
+ * Lesser General Public License for more details.
37
+ *
38
+ * You should have received a copy of the GNU Lesser General Public
39
+ * License along with this library in the file COPYING.LIB;
40
+ * if not, write to the Free Software Foundation, Inc.,
41
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
42
+ */
43
+
44
+ #include "pthread.h"
45
+ #include "semaphore.h"
46
+ #include "implement.h"
47
+
48
+
49
+ static void PTW32_CDECL
50
+ ptw32_sem_wait_cleanup(void * sem)
51
+ {
52
+ sem_t s = (sem_t) sem;
53
+
54
+ if (pthread_mutex_lock (&s->lock) == 0)
55
+ {
56
+ /*
57
+ * If sema is destroyed do nothing, otherwise:-
58
+ * If the sema is posted between us being cancelled and us locking
59
+ * the sema again above then we need to consume that post but cancel
60
+ * anyway. If we don't get the semaphore we indicate that we're no
61
+ * longer waiting.
62
+ */
63
+ if (*((sem_t *)sem) != NULL && !(WaitForSingleObject(s->sem, 0) == WAIT_OBJECT_0))
64
+ {
65
+ ++s->value;
66
+ #if defined(NEED_SEM)
67
+ if (s->value > 0)
68
+ {
69
+ s->leftToUnblock = 0;
70
+ }
71
+ #else
72
+ /*
73
+ * Don't release the W32 sema, it doesn't need adjustment
74
+ * because it doesn't record the number of waiters.
75
+ */
76
+ #endif /* NEED_SEM */
77
+ }
78
+ (void) pthread_mutex_unlock (&s->lock);
79
+ }
80
+ }
81
+
82
+ int
83
+ sem_wait (sem_t * sem)
84
+ /*
85
+ * ------------------------------------------------------
86
+ * DOCPUBLIC
87
+ * This function waits on a semaphore.
88
+ *
89
+ * PARAMETERS
90
+ * sem
91
+ * pointer to an instance of sem_t
92
+ *
93
+ * DESCRIPTION
94
+ * This function waits on a semaphore. If the
95
+ * semaphore value is greater than zero, it decreases
96
+ * its value by one. If the semaphore value is zero, then
97
+ * the calling thread (or process) is blocked until it can
98
+ * successfully decrease the value or until interrupted by
99
+ * a signal.
100
+ *
101
+ * RESULTS
102
+ * 0 successfully decreased semaphore,
103
+ * -1 failed, error in errno
104
+ * ERRNO
105
+ * EINVAL 'sem' is not a valid semaphore,
106
+ * ENOSYS semaphores are not supported,
107
+ * EINTR the function was interrupted by a signal,
108
+ * EDEADLK a deadlock condition was detected.
109
+ *
110
+ * ------------------------------------------------------
111
+ */
112
+ {
113
+ int result = 0;
114
+ sem_t s = *sem;
115
+
116
+ pthread_testcancel();
117
+
118
+ if (s == NULL)
119
+ {
120
+ result = EINVAL;
121
+ }
122
+ else
123
+ {
124
+ if ((result = pthread_mutex_lock (&s->lock)) == 0)
125
+ {
126
+ int v;
127
+
128
+ /* See sem_destroy.c
129
+ */
130
+ if (*sem == NULL)
131
+ {
132
+ (void) pthread_mutex_unlock (&s->lock);
133
+ errno = EINVAL;
134
+ return -1;
135
+ }
136
+
137
+ v = --s->value;
138
+ (void) pthread_mutex_unlock (&s->lock);
139
+
140
+ if (v < 0)
141
+ {
142
+ #if defined(_MSC_VER) && _MSC_VER < 1400
143
+ #pragma inline_depth(0)
144
+ #endif
145
+ /* Must wait */
146
+ pthread_cleanup_push(ptw32_sem_wait_cleanup, (void *) s);
147
+ result = pthreadCancelableWait (s->sem);
148
+ /* Cleanup if we're canceled or on any other error */
149
+ pthread_cleanup_pop(result);
150
+ #if defined(_MSC_VER) && _MSC_VER < 1400
151
+ #pragma inline_depth()
152
+ #endif
153
+ }
154
+ #if defined(NEED_SEM)
155
+
156
+ if (!result && pthread_mutex_lock (&s->lock) == 0)
157
+ {
158
+ if (*sem == NULL)
159
+ {
160
+ (void) pthread_mutex_unlock (&s->lock);
161
+ errno = EINVAL;
162
+ return -1;
163
+ }
164
+
165
+ if (s->leftToUnblock > 0)
166
+ {
167
+ --s->leftToUnblock;
168
+ SetEvent(s->sem);
169
+ }
170
+ (void) pthread_mutex_unlock (&s->lock);
171
+ }
172
+
173
+ #endif /* NEED_SEM */
174
+
175
+ }
176
+
177
+ }
178
+
179
+ if (result != 0)
180
+ {
181
+ errno = result;
182
+ return -1;
183
+ }
184
+
185
+ return 0;
186
+
187
+ } /* sem_wait */
@@ -0,0 +1,69 @@
1
+ /*
2
+ * -------------------------------------------------------------
3
+ *
4
+ * Module: semaphore.c
5
+ *
6
+ * Purpose:
7
+ * Concatenated version of separate modules to allow
8
+ * inlining optimisation, which it is assumed can only
9
+ * be effective within a single module.
10
+ *
11
+ * Semaphores aren't actually part of the PThreads standard.
12
+ * They are defined by the POSIX Standard:
13
+ *
14
+ * POSIX 1003.1b-1993 (POSIX.1b)
15
+ *
16
+ * -------------------------------------------------------------
17
+ *
18
+ * --------------------------------------------------------------------------
19
+ *
20
+ * Pthreads-win32 - POSIX Threads Library for Win32
21
+ * Copyright(C) 1998 John E. Bossom
22
+ * Copyright(C) 1999,2005 Pthreads-win32 contributors
23
+ *
24
+ * Contact Email: rpj@callisto.canberra.edu.au
25
+ *
26
+ * The current list of contributors is contained
27
+ * in the file CONTRIBUTORS included with the source
28
+ * code distribution. The list can also be seen at the
29
+ * following World Wide Web location:
30
+ * http://sources.redhat.com/pthreads-win32/contributors.html
31
+ *
32
+ * This library is free software; you can redistribute it and/or
33
+ * modify it under the terms of the GNU Lesser General Public
34
+ * License as published by the Free Software Foundation; either
35
+ * version 2 of the License, or (at your option) any later version.
36
+ *
37
+ * This library is distributed in the hope that it will be useful,
38
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
39
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
40
+ * Lesser General Public License for more details.
41
+ *
42
+ * You should have received a copy of the GNU Lesser General Public
43
+ * License along with this library in the file COPYING.LIB;
44
+ * if not, write to the Free Software Foundation, Inc.,
45
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
46
+ */
47
+
48
+ #if !defined(NEED_FTIME)
49
+ # include <sys/timeb.h>
50
+ #endif
51
+
52
+ #include <limits.h>
53
+
54
+ #include "pthread.h"
55
+ #include "semaphore.h"
56
+ #include "implement.h"
57
+
58
+
59
+ #include "sem_init.c"
60
+ #include "sem_destroy.c"
61
+ #include "sem_trywait.c"
62
+ #include "sem_wait.c"
63
+ #include "sem_timedwait.c"
64
+ #include "sem_post.c"
65
+ #include "sem_post_multiple.c"
66
+ #include "sem_getvalue.c"
67
+ #include "sem_open.c"
68
+ #include "sem_close.c"
69
+ #include "sem_unlink.c"