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,601 @@
1
+ PTHREADS-WIN32
2
+ ==============
3
+
4
+ Pthreads-win32 is free software, distributed under the GNU Lesser
5
+ General Public License (LGPL). See the file 'COPYING.LIB' for terms
6
+ and conditions. Also see the file 'COPYING' for information
7
+ specific to pthreads-win32, copyrights and the LGPL.
8
+
9
+
10
+ What is it?
11
+ -----------
12
+
13
+ Pthreads-win32 is an Open Source Software implementation of the
14
+ Threads component of the POSIX 1003.1c 1995 Standard (or later)
15
+ for Microsoft's Win32 environment. Some functions from POSIX
16
+ 1003.1b are also supported including semaphores. Other related
17
+ functions include the set of read-write lock functions. The
18
+ library also supports some of the functionality of the Open
19
+ Group's Single Unix specification, version 2, namely mutex types,
20
+ plus some common and pthreads-win32 specific non-portable
21
+ routines (see README.NONPORTABLE).
22
+
23
+ See the file "ANNOUNCE" for more information including standards
24
+ conformance details and the list of supported and unsupported
25
+ routines.
26
+
27
+
28
+ Prerequisites
29
+ -------------
30
+ MSVC or GNU C (MinGW32 MSys development kit)
31
+ To build from source.
32
+
33
+ QueueUserAPCEx by Panagiotis E. Hadjidoukas
34
+ To support any thread cancelation in C++ library builds or
35
+ to support cancelation of blocked threads in any build.
36
+ This library is not required otherwise.
37
+
38
+ For true async cancelation of threads (including blocked threads).
39
+ This is a DLL and Windows driver that provides pre-emptive APC
40
+ by forcing threads into an alertable state when the APC is queued.
41
+ Both the DLL and driver are provided with the pthreads-win32.exe
42
+ self-unpacking ZIP, and on the pthreads-win32 FTP site (in source
43
+ and pre-built forms). Currently this is a separate LGPL package to
44
+ pthreads-win32. See the README in the QueueUserAPCEx folder for
45
+ installation instructions.
46
+
47
+ Pthreads-win32 will automatically detect if the QueueUserAPCEx DLL
48
+ QuserEx.DLL is available and whether the driver AlertDrv.sys is
49
+ loaded. If it is not available, pthreads-win32 will simulate async
50
+ cancelation, which means that it can async cancel only threads that
51
+ are runnable. The simulated async cancellation cannot cancel blocked
52
+ threads.
53
+
54
+ [FOR SECURITY] To be found Quserex.dll MUST be installed in the
55
+ Windows System Folder. This is not an unreasonable constraint given a
56
+ driver must also be installed and loaded at system startup.
57
+
58
+
59
+ Library naming
60
+ --------------
61
+
62
+ Because the library is being built using various exception
63
+ handling schemes and compilers - and because the library
64
+ may not work reliably if these are mixed in an application,
65
+ each different version of the library has it's own name.
66
+
67
+ Note 1: the incompatibility is really between EH implementations
68
+ of the different compilers. It should be possible to use the
69
+ standard C version from either compiler with C++ applications
70
+ built with a different compiler. If you use an EH version of
71
+ the library, then you must use the same compiler for the
72
+ application. This is another complication and dependency that
73
+ can be avoided by using only the standard C library version.
74
+
75
+ Note 2: if you use a standard C pthread*.dll with a C++
76
+ application, then any functions that you define that are
77
+ intended to be called via pthread_cleanup_push() must be
78
+ __cdecl.
79
+
80
+ Note 3: the intention was to also name either the VC or GC
81
+ version (it should be arbitrary) as pthread.dll, including
82
+ pthread.lib and libpthread.a as appropriate. This is no longer
83
+ likely to happen.
84
+
85
+ Note 4: the compatibility number was added so that applications
86
+ can differentiate between binary incompatible versions of the
87
+ libs and dlls.
88
+
89
+ In general:
90
+ pthread[VG]{SE,CE,C}[c].dll
91
+ pthread[VG]{SE,CE,C}[c].lib
92
+
93
+ where:
94
+ [VG] indicates the compiler
95
+ V - MS VC, or
96
+ G - GNU C
97
+
98
+ {SE,CE,C} indicates the exception handling scheme
99
+ SE - Structured EH, or
100
+ CE - C++ EH, or
101
+ C - no exceptions - uses setjmp/longjmp
102
+
103
+ c - DLL compatibility number indicating ABI and API
104
+ compatibility with applications built against
105
+ a snapshot with the same compatibility number.
106
+ See 'Version numbering' below.
107
+
108
+ The name may also be suffixed by a 'd' to indicate a debugging version
109
+ of the library. E.g. pthreadVC2d.lib. Debugging versions contain
110
+ additional information for debugging (symbols etc) and are often not
111
+ optimised in any way (compiled with optimisation turned off).
112
+
113
+ Examples:
114
+ pthreadVSE.dll (MSVC/SEH)
115
+ pthreadGCE.dll (GNUC/C++ EH)
116
+ pthreadGC.dll (GNUC/not dependent on exceptions)
117
+ pthreadVC1.dll (MSVC/not dependent on exceptions - not binary
118
+ compatible with pthreadVC.dll)
119
+ pthreadVC2.dll (MSVC/not dependent on exceptions - not binary
120
+ compatible with pthreadVC1.dll or pthreadVC.dll)
121
+
122
+ The GNU library archive file names have correspondingly changed to:
123
+
124
+ libpthreadGCEc.a
125
+ libpthreadGCc.a
126
+
127
+
128
+ Versioning numbering
129
+ --------------------
130
+
131
+ Version numbering is separate from the snapshot dating system, and
132
+ is the canonical version identification system embedded within the
133
+ DLL using the Microsoft version resource system. The versioning
134
+ system chosen follows the GNU Libtool system. See
135
+ http://www.gnu.org/software/libtool/manual.html section 6.2.
136
+
137
+ See the resource file 'version.rc'.
138
+
139
+ Microsoft version numbers use 4 integers:
140
+
141
+ 0.0.0.0
142
+
143
+ Pthreads-win32 uses the first 3 following the Libtool convention.
144
+ The fourth is commonly used for the build number, but will be reserved
145
+ for future use.
146
+
147
+ current.revision.age.0
148
+
149
+ The numbers are changed as follows:
150
+
151
+ 1. If the library source code has changed at all since the last update,
152
+ then increment revision (`c:r:a' becomes `c:r+1:a').
153
+ 2. If any interfaces have been added, removed, or changed since the last
154
+ update, increment current, and set revision to 0.
155
+ 3. If any interfaces have been added since the last public release, then
156
+ increment age.
157
+ 4. If any interfaces have been removed or changed since the last public
158
+ release, then set age to 0.
159
+
160
+
161
+ DLL compatibility numbering is an attempt to ensure that applications
162
+ always load a compatible pthreads-win32 DLL by using a DLL naming system
163
+ that is consistent with the version numbering system. It also allows
164
+ older and newer DLLs to coexist in the same filesystem so that older
165
+ applications can continue to be used. For pre .NET Windows systems,
166
+ this inevitably requires incompatible versions of the same DLLs to have
167
+ different names.
168
+
169
+ Pthreads-win32 has adopted the Cygwin convention of appending a single
170
+ integer number to the DLL name. The number used is based on the library
171
+ version number and is computed as 'current' - 'age'.
172
+
173
+ (See http://home.att.net/~perlspinr/libversioning.html for a nicely
174
+ detailed explanation.)
175
+
176
+ Using this method, DLL name/s will only change when the DLL's
177
+ backwards compatibility changes. Note that the addition of new
178
+ 'interfaces' will not of itself change the DLL's compatibility for older
179
+ applications.
180
+
181
+
182
+ Which of the several dll versions to use?
183
+ -----------------------------------------
184
+ or,
185
+ ---
186
+ What are all these pthread*.dll and pthread*.lib files?
187
+ -------------------------------------------------------
188
+
189
+ Simple, use either pthreadGCv.* if you use GCC, or pthreadVCv.* if you
190
+ use MSVC - where 'v' is the DLL versioning (compatibility) number.
191
+
192
+ Otherwise, you need to choose carefully and know WHY.
193
+
194
+ The most important choice you need to make is whether to use a
195
+ version that uses exceptions internally, or not. There are versions
196
+ of the library that use exceptions as part of the thread
197
+ cancelation and exit implementation. The default version uses
198
+ setjmp/longjmp.
199
+
200
+ There is some contension amongst POSIX threads experts as
201
+ to how POSIX threads cancelation and exit should work
202
+ with languages that use exceptions, e.g. C++ and even C
203
+ (Microsoft's Structured Exceptions).
204
+
205
+ The issue is: should cancelation of a thread in, say,
206
+ a C++ application cause object destructors and C++ exception
207
+ handlers to be invoked as the stack unwinds during thread
208
+ exit, or not?
209
+
210
+ There seems to be more opinion in favour of using the
211
+ standard C version of the library (no EH) with C++ applications
212
+ for the reason that this appears to be the assumption commercial
213
+ pthreads implementations make. Therefore, if you use an EH version
214
+ of pthreads-win32 then you may be under the illusion that
215
+ your application will be portable, when in fact it is likely to
216
+ behave differently when linked with other pthreads libraries.
217
+
218
+ Now you may be asking: then why have you kept the EH versions of
219
+ the library?
220
+
221
+ There are a couple of reasons:
222
+ - there is division amongst the experts and so the code may
223
+ be needed in the future. Yes, it's in the repository and we
224
+ can get it out anytime in the future, but it would be difficult
225
+ to find.
226
+ - pthreads-win32 is one of the few implementations, and possibly
227
+ the only freely available one, that has EH versions. It may be
228
+ useful to people who want to play with or study application
229
+ behaviour under these conditions.
230
+
231
+ Notes:
232
+
233
+ [If you use either pthreadVCE or pthreadGCE]
234
+
235
+ 1. [See also the discussion in the FAQ file - Q2, Q4, and Q5]
236
+
237
+ If your application contains catch(...) blocks in your POSIX
238
+ threads then you will need to replace the "catch(...)" with the macro
239
+ "PtW32Catch", eg.
240
+
241
+ #ifdef PtW32Catch
242
+ PtW32Catch {
243
+ ...
244
+ }
245
+ #else
246
+ catch(...) {
247
+ ...
248
+ }
249
+ #endif
250
+
251
+ Otherwise neither pthreads cancelation nor pthread_exit() will work
252
+ reliably when using versions of the library that use C++ exceptions
253
+ for cancelation and thread exit.
254
+
255
+ This is due to what is believed to be a C++ compliance error in VC++
256
+ whereby you may not have multiple handlers for the same exception in
257
+ the same try/catch block. GNU G++ doesn't have this restriction.
258
+
259
+
260
+ Other name changes
261
+ ------------------
262
+
263
+ All snapshots prior to and including snapshot 2000-08-13
264
+ used "_pthread_" as the prefix to library internal
265
+ functions, and "_PTHREAD_" to many library internal
266
+ macros. These have now been changed to "ptw32_" and "PTW32_"
267
+ respectively so as to not conflict with the ANSI standard's
268
+ reservation of identifiers beginning with "_" and "__" for
269
+ use by compiler implementations only.
270
+
271
+ If you have written any applications and you are linking
272
+ statically with the pthreads-win32 library then you may have
273
+ included a call to _pthread_processInitialize. You will
274
+ now have to change that to ptw32_processInitialize.
275
+
276
+
277
+ Cleanup code default style
278
+ --------------------------
279
+
280
+ Previously, if not defined, the cleanup style was determined automatically
281
+ from the compiler used, and one of the following was defined accordingly:
282
+
283
+ __CLEANUP_SEH MSVC only
284
+ __CLEANUP_CXX C++, including MSVC++, GNU G++
285
+ __CLEANUP_C C, including GNU GCC, not MSVC
286
+
287
+ These defines determine the style of cleanup (see pthread.h) and,
288
+ most importantly, the way that cancelation and thread exit (via
289
+ pthread_exit) is performed (see the routine ptw32_throw()).
290
+
291
+ In short, the exceptions versions of the library throw an exception
292
+ when a thread is canceled, or exits via pthread_exit(). This exception is
293
+ caught by a handler in the thread startup routine, so that the
294
+ the correct stack unwinding occurs regardless of where the thread
295
+ is when it's canceled or exits via pthread_exit().
296
+
297
+ In this snapshot, unless the build explicitly defines (e.g. via a
298
+ compiler option) __CLEANUP_SEH, __CLEANUP_CXX, or __CLEANUP_C, then
299
+ the build NOW always defaults to __CLEANUP_C style cleanup. This style
300
+ uses setjmp/longjmp in the cancelation and pthread_exit implementations,
301
+ and therefore won't do stack unwinding even when linked to applications
302
+ that have it (e.g. C++ apps). This is for consistency with most/all
303
+ commercial Unix POSIX threads implementations.
304
+
305
+ Although it was not clearly documented before, it is still necessary to
306
+ build your application using the same __CLEANUP_* define as was
307
+ used for the version of the library that you link with, so that the
308
+ correct parts of pthread.h are included. That is, the possible
309
+ defines require the following library versions:
310
+
311
+ __CLEANUP_SEH pthreadVSE.dll
312
+ __CLEANUP_CXX pthreadVCE.dll or pthreadGCE.dll
313
+ __CLEANUP_C pthreadVC.dll or pthreadGC.dll
314
+
315
+ It is recommended that you let pthread.h use it's default __CLEANUP_C
316
+ for both library and application builds. That is, don't define any of
317
+ the above, and then link with pthreadVC.lib (MSVC or MSVC++) and
318
+ libpthreadGC.a (MinGW GCC or G++). The reason is explained below, but
319
+ another reason is that the prebuilt pthreadVCE.dll is currently broken.
320
+ Versions built with MSVC++ later than version 6 may not be broken, but I
321
+ can't verify this yet.
322
+
323
+ WHY ARE WE MAKING THE DEFAULT STYLE LESS EXCEPTION-FRIENDLY?
324
+ Because no commercial Unix POSIX threads implementation allows you to
325
+ choose to have stack unwinding. Therefore, providing it in pthread-win32
326
+ as a default is dangerous. We still provide the choice but unless
327
+ you consciously choose to do otherwise, your pthreads applications will
328
+ now run or crash in similar ways irrespective of the pthreads platform
329
+ you use. Or at least this is the hope.
330
+
331
+
332
+ Building under VC++ using C++ EH, Structured EH, or just C
333
+ ----------------------------------------------------------
334
+
335
+ From the source directory run nmake without any arguments to list
336
+ help information. E.g.
337
+
338
+ $ nmake
339
+
340
+ Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
341
+ Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
342
+
343
+ Run one of the following command lines:
344
+ nmake clean VCE (to build the MSVC dll with C++ exception handling)
345
+ nmake clean VSE (to build the MSVC dll with structured exception handling)
346
+ nmake clean VC (to build the MSVC dll with C cleanup code)
347
+ nmake clean VCE-inlined (to build the MSVC inlined dll with C++ exception handling)
348
+ nmake clean VSE-inlined (to build the MSVC inlined dll with structured exception handling)
349
+ nmake clean VC-inlined (to build the MSVC inlined dll with C cleanup code)
350
+ nmake clean VC-static (to build the MSVC static lib with C cleanup code)
351
+ nmake clean VCE-debug (to build the debug MSVC dll with C++ exception handling)
352
+ nmake clean VSE-debug (to build the debug MSVC dll with structured exception handling)
353
+ nmake clean VC-debug (to build the debug MSVC dll with C cleanup code)
354
+ nmake clean VCE-inlined-debug (to build the debug MSVC inlined dll with C++ exception handling)
355
+ nmake clean VSE-inlined-debug (to build the debug MSVC inlined dll with structured exception handling)
356
+ nmake clean VC-inlined-debug (to build the debug MSVC inlined dll with C cleanup code)
357
+ nmake clean VC-static-debug (to build the debug MSVC static lib with C cleanup code)
358
+
359
+
360
+ The pre-built dlls are normally built using the *-inlined targets.
361
+
362
+ You can run the testsuite by changing to the "tests" directory and
363
+ running nmake. E.g.:
364
+
365
+ $ cd tests
366
+ $ nmake
367
+
368
+ Microsoft (R) Program Maintenance Utility Version 6.00.8168.0
369
+ Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
370
+
371
+ Run one of the following command lines:
372
+ nmake clean VC (to test using VC dll with VC (no EH) applications)
373
+ nmake clean VCX (to test using VC dll with VC++ (EH) applications)
374
+ nmake clean VCE (to test using the VCE dll with VC++ EH applications)
375
+ nmake clean VSE (to test using VSE dll with VC (SEH) applications)
376
+ nmake clean VC-bench (to benchtest using VC dll with C bench app)
377
+ nmake clean VCX-bench (to benchtest using VC dll with C++ bench app)
378
+ nmake clean VCE-bench (to benchtest using VCE dll with C++ bench app)
379
+ nmake clean VSE-bench (to benchtest using VSE dll with SEH bench app)
380
+ nmake clean VC-static (to test using VC static lib with VC (no EH) applications)
381
+
382
+
383
+ Building under Mingw32
384
+ ----------------------
385
+
386
+ The dll can be built easily with recent versions of Mingw32.
387
+ (The distributed versions are built using Mingw32 and MsysDTK
388
+ from www.mingw32.org.)
389
+
390
+ From the source directory, run make for help information. E.g.:
391
+
392
+ $ make
393
+ Run one of the following command lines:
394
+ make clean GC (to build the GNU C dll with C cleanup code)
395
+ make clean GCE (to build the GNU C dll with C++ exception handling)
396
+ make clean GC-inlined (to build the GNU C inlined dll with C cleanup code)
397
+ make clean GCE-inlined (to build the GNU C inlined dll with C++ exception handling)
398
+ make clean GC-static (to build the GNU C inlined static lib with C cleanup code)
399
+ make clean GC-debug (to build the GNU C debug dll with C cleanup code)
400
+ make clean GCE-debug (to build the GNU C debug dll with C++ exception handling)
401
+ make clean GC-inlined-debug (to build the GNU C inlined debug dll with C cleanup code)
402
+ make clean GCE-inlined-debug (to build the GNU C inlined debug dll with C++ exception handling)
403
+ make clean GC-static-debug (to build the GNU C inlined static debug lib with C cleanup code)
404
+
405
+
406
+ The pre-built dlls are normally built using the *-inlined targets.
407
+
408
+ You can run the testsuite by changing to the "tests" directory and
409
+ running make for help information. E.g.:
410
+
411
+ $ cd tests
412
+ $ make
413
+ Run one of the following command lines:
414
+ make clean GC (to test using GC dll with C (no EH) applications)
415
+ make clean GCX (to test using GC dll with C++ (EH) applications)
416
+ make clean GCE (to test using GCE dll with C++ (EH) applications)
417
+ make clean GC-bench (to benchtest using GNU C dll with C cleanup code)
418
+ make clean GCE-bench (to benchtest using GNU C dll with C++ exception handling)
419
+ make clean GC-static (to test using GC static lib with C (no EH) applications)
420
+
421
+
422
+ Building under Linux using the Mingw32 cross development tools
423
+ --------------------------------------------------------------
424
+
425
+ You can build the library without leaving Linux by using the Mingw32 cross
426
+ development toolchain. See http://www.libsdl.org/extras/win32/cross/ for
427
+ tools and info. The GNUmakefile contains some support for this, for example:
428
+
429
+ make CROSS=i386-mingw32msvc- clean GC-inlined
430
+
431
+ will build pthreadGCn.dll and libpthreadGCn.a (n=version#), provided your
432
+ cross-tools/bin directory is in your PATH (or use the cross-make.sh script
433
+ at the URL above).
434
+
435
+
436
+ Building the library as a statically linkable library
437
+ -----------------------------------------------------
438
+
439
+ General: PTW32_STATIC_LIB must be defined for both the library build and the
440
+ application build. The makefiles supplied and used by the following 'make'
441
+ command lines will define this for you.
442
+
443
+ MSVC (creates pthreadVCn.lib as a static link lib):
444
+
445
+ nmake clean VC-static
446
+
447
+
448
+ MinGW32 (creates libpthreadGCn.a as a static link lib):
449
+
450
+ make clean GC-static
451
+
452
+
453
+ Define PTW32_STATIC_LIB when building your application. Also, your
454
+ application must call a two non-portable routines to initialise the
455
+ some state on startup and cleanup before exit. One other routine needs
456
+ to be called to cleanup after any Win32 threads have called POSIX API
457
+ routines. See README.NONPORTABLE or the html reference manual pages for
458
+ details on these routines:
459
+
460
+ BOOL pthread_win32_process_attach_np (void);
461
+ BOOL pthread_win32_process_detach_np (void);
462
+ BOOL pthread_win32_thread_attach_np (void); // Currently a no-op
463
+ BOOL pthread_win32_thread_detach_np (void);
464
+
465
+
466
+ The tests makefiles have the same targets but only check that the
467
+ static library is statically linkable. They don't run the full
468
+ testsuite. To run the full testsuite, build the dlls and run the
469
+ dll test targets.
470
+
471
+
472
+ Building the library under Cygwin
473
+ ---------------------------------
474
+
475
+ Cygwin is implementing it's own POSIX threads routines and these
476
+ will be the ones to use if you develop using Cygwin.
477
+
478
+
479
+ Ready to run binaries
480
+ ---------------------
481
+
482
+ For convenience, the following ready-to-run files can be downloaded
483
+ from the FTP site (see under "Availability" below):
484
+
485
+ pthread.h
486
+ semaphore.h
487
+ sched.h
488
+ pthreadVC.dll - built with MSVC compiler using C setjmp/longjmp
489
+ pthreadVC.lib
490
+ pthreadVCE.dll - built with MSVC++ compiler using C++ EH
491
+ pthreadVCE.lib
492
+ pthreadVSE.dll - built with MSVC compiler using SEH
493
+ pthreadVSE.lib
494
+ pthreadGC.dll - built with Mingw32 GCC
495
+ libpthreadGC.a - derived from pthreadGC.dll
496
+ pthreadGCE.dll - built with Mingw32 G++
497
+ libpthreadGCE.a - derived from pthreadGCE.dll
498
+
499
+ As of August 2003 pthreads-win32 pthreadG* versions are built and tested
500
+ using the MinGW + MsysDTK environment current as of that date or later.
501
+ The following file MAY be needed for older MinGW environments.
502
+
503
+ gcc.dll - needed to build and run applications that use
504
+ pthreadGCE.dll.
505
+
506
+
507
+ Building applications with GNU compilers
508
+ ----------------------------------------
509
+
510
+ If you're using pthreadGC.dll:
511
+
512
+ With the three header files, pthreadGC.dll and libpthreadGC.a in the
513
+ same directory as your application myapp.c, you could compile, link
514
+ and run myapp.c under Mingw32 as follows:
515
+
516
+ gcc -o myapp.exe myapp.c -I. -L. -lpthreadGC
517
+ myapp
518
+
519
+ Or put pthreadGC.dll in an appropriate directory in your PATH,
520
+ put libpthreadGC.a in your system lib directory, and
521
+ put the three header files in your system include directory,
522
+ then use:
523
+
524
+ gcc -o myapp.exe myapp.c -lpthreadGC
525
+ myapp
526
+
527
+
528
+ If you're using pthreadGCE.dll:
529
+
530
+ With the three header files, pthreadGCE.dll, gcc.dll and libpthreadGCE.a
531
+ in the same directory as your application myapp.c, you could compile,
532
+ link and run myapp.c under Mingw32 as follows:
533
+
534
+ gcc -x c++ -o myapp.exe myapp.c -I. -L. -lpthreadGCE
535
+ myapp
536
+
537
+ Or put pthreadGCE.dll and gcc.dll in an appropriate directory in
538
+ your PATH, put libpthreadGCE.a in your system lib directory, and
539
+ put the three header files in your system include directory,
540
+ then use:
541
+
542
+ gcc -x c++ -o myapp.exe myapp.c -lpthreadGCE
543
+ myapp
544
+
545
+
546
+ Availability
547
+ ------------
548
+
549
+ The complete source code in either unbundled, self-extracting
550
+ Zip file, or tar/gzipped format can be found at:
551
+
552
+ ftp://sources.redhat.com/pub/pthreads-win32
553
+
554
+ The pre-built DLL, export libraries and matching pthread.h can
555
+ be found at:
556
+
557
+ ftp://sources.redhat.com/pub/pthreads-win32/dll-latest
558
+
559
+ Home page:
560
+
561
+ http://sources.redhat.com/pthreads-win32/
562
+
563
+
564
+ Mailing list
565
+ ------------
566
+
567
+ There is a mailing list for discussing pthreads on Win32.
568
+ To join, send email to:
569
+
570
+ pthreads-win32-subscribe@sources.redhat.com
571
+
572
+ Unsubscribe by sending mail to:
573
+
574
+ pthreads-win32-unsubscribe@sources.redhat.com
575
+
576
+
577
+ Acknowledgements
578
+ ----------------
579
+
580
+ See the ANNOUNCE file for acknowledgements.
581
+ See the 'CONTRIBUTORS' file for the list of contributors.
582
+
583
+ As much as possible, the ChangeLog file attributes
584
+ contributions and patches that have been incorporated
585
+ in the library to the individuals responsible.
586
+
587
+ Finally, thanks to all those who work on and contribute to the
588
+ POSIX and Single Unix Specification standards. The maturity of an
589
+ industry can be measured by it's open standards.
590
+
591
+ ----
592
+ Ross Johnson
593
+ <rpj@callisto.canberra.edu.au>
594
+
595
+
596
+
597
+
598
+
599
+
600
+
601
+
@@ -0,0 +1,57 @@
1
+ In ptw32_InterlockedCompareExchange.c, I've added a section for
2
+ Borland's compiler; it's identical to that for the MS compiler except
3
+ that it uses /* ... */ comments instead of ; comments.
4
+
5
+ [RPJ: need to define HAVE_TASM32 in config.h to use the above.]
6
+
7
+
8
+ The other file is a makefile suitable for use with Borland's compiler
9
+ (run "make -fBmakefile" in the directory). It builds a single version
10
+ of the library, pthreadBC.dll and the corresponding pthreadBC.lib
11
+ import library, which is comparable to the pthreadVC version; I can't
12
+ personally see any demand for the versions that include structured or
13
+ C++ exception cancellation handling so I haven't attempted to build
14
+ those versions of the library. (I imagine a static version might be
15
+ of use to some, but we can't legally use that on my commercial
16
+ projects so I can't try that out, unfortunately.)
17
+
18
+ [RPJ: Added tests\Bmakefile as well.]
19
+
20
+ Borland C++ doesn't define the ENOSYS constant used by pthreads-win32;
21
+ rather than make more extensive patches to the pthreads-win32 source I
22
+ have a mostly-arbitrary constant for it in the makefile. However this
23
+ doesn't make it visible to the application using the library, so if
24
+ anyone actually wants to use this constant in their apps (why?)
25
+ someone might like to make a seperate NEED_BCC_something define to add
26
+ this stuff.
27
+
28
+ The makefile also #defines EDEADLK as EDEADLOCK, _timeb as timeb, and
29
+ _ftime as ftime, to deal with the minor differences between the two
30
+ RTLs' naming conventions, and sets the compiler flags as required to
31
+ get a normal compile of the library.
32
+
33
+ [RPJ: Moved errno values and _timeb etc to pthread.h, so apps will also
34
+ use them.]
35
+
36
+ (While I'm on the subject, the reason Borland users should recompile
37
+ the library, rather than using the impdef/implib technique suggested
38
+ previously on the mailing list, is that a) the errno constants are
39
+ different, so the results returned by the pthread_* functions can be
40
+ meaningless, and b) the errno variable/pseudo-variable itself is
41
+ different in the MS & BCC runtimes, so you can't access the
42
+ pthreadVC's errno from a Borland C++-compiled host application
43
+ correctly - I imagine there are other potential problems from the RTL
44
+ mismatch too.)
45
+
46
+ [RPJ: Make sure you use the same RTL in both dll and application builds.
47
+ The dll and tests Bmakefiles use cw32mti.lib. Having some trouble with
48
+ memory read exceptions running the test suite using BCC55.]
49
+
50
+ Best regards,
51
+ Will
52
+
53
+ --
54
+ Will Bryant
55
+ Systems Architect, eCOSM Limited
56
+ Cell +64 21 655 443, office +64 3 365 4176
57
+ http://www.ecosm.com/