noderb 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. data/ext/noderb_extension/libuv/AUTHORS +11 -1
  2. data/ext/noderb_extension/libuv/LICENSE +0 -8
  3. data/ext/noderb_extension/libuv/Makefile +5 -5
  4. data/ext/noderb_extension/libuv/README +11 -6
  5. data/ext/noderb_extension/libuv/common.gypi +158 -7
  6. data/ext/noderb_extension/libuv/config-unix.mk +34 -26
  7. data/ext/noderb_extension/libuv/gyp_uv +22 -4
  8. data/ext/noderb_extension/libuv/include/{eio.h → uv-private/eio.h} +2 -2
  9. data/ext/noderb_extension/libuv/include/{uv-unix.h → uv-private/uv-unix.h} +40 -0
  10. data/ext/noderb_extension/libuv/include/{uv-win.h → uv-private/uv-win.h} +96 -14
  11. data/ext/noderb_extension/libuv/include/uv.h +508 -83
  12. data/ext/noderb_extension/libuv/src/unix/cares.c +185 -0
  13. data/ext/noderb_extension/libuv/src/unix/core.c +828 -0
  14. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_darwin.h +4 -0
  15. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_linux.h +5 -15
  16. data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.c +23 -2
  17. data/ext/noderb_extension/libuv/src/unix/error.c +102 -0
  18. data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_linux.h +26 -15
  19. data/ext/noderb_extension/libuv/src/unix/fs.c +562 -0
  20. data/ext/noderb_extension/libuv/src/unix/internal.h +75 -0
  21. data/ext/noderb_extension/libuv/src/unix/pipe.c +282 -0
  22. data/ext/noderb_extension/libuv/src/unix/process.c +287 -0
  23. data/ext/noderb_extension/libuv/src/unix/stream.c +727 -0
  24. data/ext/noderb_extension/libuv/src/unix/tcp.c +226 -0
  25. data/ext/noderb_extension/libuv/src/unix/udp.c +524 -0
  26. data/ext/noderb_extension/libuv/src/{uv-eio.c → unix/uv-eio.c} +48 -27
  27. data/ext/noderb_extension/libuv/src/{uv-eio.h → unix/uv-eio.h} +1 -1
  28. data/ext/noderb_extension/libuv/src/uv-common.c +24 -14
  29. data/ext/noderb_extension/libuv/src/uv-common.h +12 -7
  30. data/ext/noderb_extension/libuv/src/win/async.c +14 -16
  31. data/ext/noderb_extension/libuv/src/win/cares.c +64 -79
  32. data/ext/noderb_extension/libuv/src/win/core.c +105 -53
  33. data/ext/noderb_extension/libuv/src/win/error.c +23 -13
  34. data/ext/noderb_extension/libuv/src/win/fs.c +807 -0
  35. data/ext/noderb_extension/libuv/src/win/getaddrinfo.c +61 -41
  36. data/ext/noderb_extension/libuv/src/win/handle.c +56 -30
  37. data/ext/noderb_extension/libuv/src/win/internal.h +134 -95
  38. data/ext/noderb_extension/libuv/src/win/loop-watcher.c +21 -18
  39. data/ext/noderb_extension/libuv/src/win/pipe.c +313 -158
  40. data/ext/noderb_extension/libuv/src/win/process.c +117 -131
  41. data/ext/noderb_extension/libuv/src/win/req.c +55 -31
  42. data/ext/noderb_extension/libuv/src/win/stdio.c +5 -5
  43. data/ext/noderb_extension/libuv/src/win/stream.c +19 -14
  44. data/ext/noderb_extension/libuv/src/win/tcp.c +278 -336
  45. data/ext/noderb_extension/libuv/src/win/threadpool.c +73 -0
  46. data/ext/noderb_extension/libuv/src/win/timer.c +44 -37
  47. data/ext/noderb_extension/libuv/src/win/udp.c +592 -0
  48. data/ext/noderb_extension/libuv/src/win/util.c +20 -6
  49. data/ext/noderb_extension/libuv/src/win/winapi.c +23 -6
  50. data/ext/noderb_extension/libuv/src/win/winapi.h +4206 -0
  51. data/ext/noderb_extension/libuv/src/win/winsock.c +270 -0
  52. data/ext/noderb_extension/libuv/src/win/winsock.h +134 -0
  53. data/ext/noderb_extension/libuv/test/benchmark-ares.c +10 -6
  54. data/ext/noderb_extension/libuv/test/benchmark-getaddrinfo.c +10 -7
  55. data/ext/noderb_extension/libuv/test/benchmark-list.h +21 -0
  56. data/ext/noderb_extension/libuv/test/benchmark-ping-pongs.c +11 -7
  57. data/ext/noderb_extension/libuv/test/benchmark-pound.c +147 -58
  58. data/ext/noderb_extension/libuv/test/benchmark-pump.c +29 -23
  59. data/ext/noderb_extension/libuv/test/benchmark-spawn.c +13 -10
  60. data/ext/noderb_extension/libuv/test/benchmark-udp-packet-storm.c +250 -0
  61. data/ext/noderb_extension/libuv/test/dns-server.c +11 -6
  62. data/ext/noderb_extension/libuv/test/echo-server.c +30 -22
  63. data/ext/noderb_extension/libuv/test/test-async.c +3 -3
  64. data/ext/noderb_extension/libuv/test/test-callback-stack.c +6 -6
  65. data/ext/noderb_extension/libuv/test/test-connection-fail.c +6 -5
  66. data/ext/noderb_extension/libuv/test/test-delayed-accept.c +13 -13
  67. data/ext/noderb_extension/libuv/test/test-fs.c +715 -0
  68. data/ext/noderb_extension/libuv/test/test-getaddrinfo.c +11 -8
  69. data/ext/noderb_extension/libuv/test/test-gethostbyname.c +8 -9
  70. data/ext/noderb_extension/libuv/test/test-getsockname.c +142 -16
  71. data/ext/noderb_extension/libuv/test/test-idle.c +4 -3
  72. data/ext/noderb_extension/libuv/test/test-list.h +29 -2
  73. data/ext/noderb_extension/libuv/test/test-loop-handles.c +9 -8
  74. data/ext/noderb_extension/libuv/test/test-ping-pong.c +9 -9
  75. data/ext/noderb_extension/libuv/test/test-pipe-bind-error.c +18 -14
  76. data/ext/noderb_extension/libuv/test/test-ref.c +17 -16
  77. data/ext/noderb_extension/libuv/test/test-shutdown-eof.c +5 -5
  78. data/ext/noderb_extension/libuv/test/test-spawn.c +17 -17
  79. data/ext/noderb_extension/libuv/test/test-tcp-bind-error.c +24 -18
  80. data/ext/noderb_extension/libuv/test/test-tcp-bind6-error.c +19 -14
  81. data/ext/noderb_extension/libuv/test/test-tcp-writealot.c +6 -5
  82. data/ext/noderb_extension/libuv/test/test-threadpool.c +59 -0
  83. data/ext/noderb_extension/libuv/test/test-timer-again.c +15 -12
  84. data/ext/noderb_extension/libuv/test/test-timer.c +8 -8
  85. data/ext/noderb_extension/libuv/test/test-udp-dgram-too-big.c +88 -0
  86. data/ext/noderb_extension/libuv/test/test-udp-ipv6.c +158 -0
  87. data/ext/noderb_extension/libuv/test/test-udp-send-and-recv.c +210 -0
  88. data/ext/noderb_extension/libuv/{all.gyp → uv.gyp} +75 -77
  89. data/ext/noderb_extension/libuv/vcbuild.bat +93 -0
  90. data/ext/noderb_extension/noderb.c +13 -0
  91. data/ext/noderb_extension/noderb_common.h +2 -1
  92. data/ext/noderb_extension/noderb_defer.c +54 -0
  93. data/ext/noderb_extension/noderb_defer.h +15 -0
  94. data/ext/noderb_extension/noderb_dns.c +1 -1
  95. data/ext/noderb_extension/noderb_fs.c +277 -0
  96. data/ext/noderb_extension/noderb_fs.h +27 -0
  97. data/ext/noderb_extension/noderb_process.c +5 -5
  98. data/ext/noderb_extension/noderb_tcp.c +10 -6
  99. data/ext/noderb_extension/noderb_timers.c +1 -1
  100. data/ext/noderb_extension/noderb_tools.c +42 -8
  101. data/ext/noderb_extension/noderb_tools.h +3 -1
  102. data/lib/noderb/defer.rb +25 -0
  103. data/lib/noderb/file.rb +119 -0
  104. data/lib/noderb/fs.rb +72 -0
  105. data/lib/noderb/version.rb +1 -1
  106. data/lib/noderb.rb +8 -0
  107. metadata +102 -266
  108. data/ext/noderb_extension/libuv/BSDmakefile +0 -2
  109. data/ext/noderb_extension/libuv/create-msvs-files.bat +0 -21
  110. data/ext/noderb_extension/libuv/deps/pthread-win32/ANNOUNCE +0 -482
  111. data/ext/noderb_extension/libuv/deps/pthread-win32/BUGS +0 -141
  112. data/ext/noderb_extension/libuv/deps/pthread-win32/Bmakefile +0 -268
  113. data/ext/noderb_extension/libuv/deps/pthread-win32/CONTRIBUTORS +0 -140
  114. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING +0 -150
  115. data/ext/noderb_extension/libuv/deps/pthread-win32/COPYING.LIB +0 -504
  116. data/ext/noderb_extension/libuv/deps/pthread-win32/ChangeLog +0 -5194
  117. data/ext/noderb_extension/libuv/deps/pthread-win32/FAQ +0 -451
  118. data/ext/noderb_extension/libuv/deps/pthread-win32/GNUmakefile +0 -593
  119. data/ext/noderb_extension/libuv/deps/pthread-win32/MAINTAINERS +0 -4
  120. data/ext/noderb_extension/libuv/deps/pthread-win32/Makefile +0 -516
  121. data/ext/noderb_extension/libuv/deps/pthread-win32/NEWS +0 -1245
  122. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile +0 -24
  123. data/ext/noderb_extension/libuv/deps/pthread-win32/Nmakefile.tests +0 -260
  124. data/ext/noderb_extension/libuv/deps/pthread-win32/PROGRESS +0 -4
  125. data/ext/noderb_extension/libuv/deps/pthread-win32/README +0 -601
  126. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Borland +0 -57
  127. data/ext/noderb_extension/libuv/deps/pthread-win32/README.CV +0 -3036
  128. data/ext/noderb_extension/libuv/deps/pthread-win32/README.NONPORTABLE +0 -783
  129. data/ext/noderb_extension/libuv/deps/pthread-win32/README.Watcom +0 -62
  130. data/ext/noderb_extension/libuv/deps/pthread-win32/README.WinCE +0 -6
  131. data/ext/noderb_extension/libuv/deps/pthread-win32/TODO +0 -7
  132. data/ext/noderb_extension/libuv/deps/pthread-win32/WinCE-PORT +0 -222
  133. data/ext/noderb_extension/libuv/deps/pthread-win32/attr.c +0 -53
  134. data/ext/noderb_extension/libuv/deps/pthread-win32/autostatic.c +0 -69
  135. data/ext/noderb_extension/libuv/deps/pthread-win32/barrier.c +0 -47
  136. data/ext/noderb_extension/libuv/deps/pthread-win32/build/all.gyp +0 -207
  137. data/ext/noderb_extension/libuv/deps/pthread-win32/builddmc.bat +0 -9
  138. data/ext/noderb_extension/libuv/deps/pthread-win32/cancel.c +0 -44
  139. data/ext/noderb_extension/libuv/deps/pthread-win32/cleanup.c +0 -148
  140. data/ext/noderb_extension/libuv/deps/pthread-win32/condvar.c +0 -50
  141. data/ext/noderb_extension/libuv/deps/pthread-win32/config.h +0 -153
  142. data/ext/noderb_extension/libuv/deps/pthread-win32/context.h +0 -74
  143. data/ext/noderb_extension/libuv/deps/pthread-win32/create.c +0 -308
  144. data/ext/noderb_extension/libuv/deps/pthread-win32/dll.c +0 -92
  145. data/ext/noderb_extension/libuv/deps/pthread-win32/errno.c +0 -94
  146. data/ext/noderb_extension/libuv/deps/pthread-win32/exit.c +0 -44
  147. data/ext/noderb_extension/libuv/deps/pthread-win32/fork.c +0 -39
  148. data/ext/noderb_extension/libuv/deps/pthread-win32/global.c +0 -107
  149. data/ext/noderb_extension/libuv/deps/pthread-win32/implement.h +0 -944
  150. data/ext/noderb_extension/libuv/deps/pthread-win32/misc.c +0 -50
  151. data/ext/noderb_extension/libuv/deps/pthread-win32/mutex.c +0 -62
  152. data/ext/noderb_extension/libuv/deps/pthread-win32/need_errno.h +0 -145
  153. data/ext/noderb_extension/libuv/deps/pthread-win32/nonportable.c +0 -47
  154. data/ext/noderb_extension/libuv/deps/pthread-win32/private.c +0 -54
  155. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.c +0 -66
  156. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsp +0 -142
  157. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.dsw +0 -29
  158. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread.h +0 -1368
  159. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_destroy.c +0 -79
  160. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getdetachstate.c +0 -86
  161. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getinheritsched.c +0 -51
  162. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedparam.c +0 -52
  163. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getschedpolicy.c +0 -61
  164. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getscope.c +0 -54
  165. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstackaddr.c +0 -97
  166. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_getstacksize.c +0 -100
  167. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_init.c +0 -117
  168. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setdetachstate.c +0 -91
  169. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setinheritsched.c +0 -57
  170. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedparam.c +0 -63
  171. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setschedpolicy.c +0 -55
  172. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setscope.c +0 -62
  173. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstackaddr.c +0 -97
  174. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_attr_setstacksize.c +0 -110
  175. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_destroy.c +0 -103
  176. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_init.c +0 -69
  177. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrier_wait.c +0 -104
  178. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_destroy.c +0 -83
  179. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_getpshared.c +0 -95
  180. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_init.c +0 -85
  181. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_barrierattr_setpshared.c +0 -119
  182. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cancel.c +0 -189
  183. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_destroy.c +0 -253
  184. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_init.c +0 -167
  185. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_signal.c +0 -231
  186. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_cond_wait.c +0 -567
  187. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_destroy.c +0 -86
  188. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_getpshared.c +0 -97
  189. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_init.c +0 -87
  190. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_condattr_setpshared.c +0 -117
  191. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_delay_np.c +0 -172
  192. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_detach.c +0 -136
  193. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_equal.c +0 -76
  194. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_exit.c +0 -106
  195. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getconcurrency.c +0 -45
  196. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getschedparam.c +0 -75
  197. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getspecific.c +0 -87
  198. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getunique_np.c +0 -47
  199. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_getw32threadhandle_np.c +0 -65
  200. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_join.c +0 -157
  201. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_create.c +0 -108
  202. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_key_delete.c +0 -125
  203. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_kill.c +0 -105
  204. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_consistent.c +0 -187
  205. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_destroy.c +0 -148
  206. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_init.c +0 -130
  207. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_lock.c +0 -269
  208. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_timedlock.c +0 -324
  209. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_trylock.c +0 -154
  210. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutex_unlock.c +0 -175
  211. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_destroy.c +0 -83
  212. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getkind_np.c +0 -44
  213. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getpshared.c +0 -95
  214. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_getrobust.c +0 -113
  215. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_gettype.c +0 -56
  216. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_init.c +0 -86
  217. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setkind_np.c +0 -44
  218. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setpshared.c +0 -119
  219. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_setrobust.c +0 -119
  220. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_mutexattr_settype.c +0 -143
  221. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_num_processors_np.c +0 -56
  222. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_once.c +0 -79
  223. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_destroy.c +0 -143
  224. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_init.c +0 -109
  225. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_rdlock.c +0 -102
  226. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedrdlock.c +0 -109
  227. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_timedwrlock.c +0 -139
  228. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_tryrdlock.c +0 -102
  229. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_trywrlock.c +0 -122
  230. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_unlock.c +0 -93
  231. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlock_wrlock.c +0 -133
  232. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_destroy.c +0 -84
  233. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_getpshared.c +0 -97
  234. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_init.c +0 -83
  235. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_rwlockattr_setpshared.c +0 -120
  236. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_self.c +0 -141
  237. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcancelstate.c +0 -125
  238. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setcanceltype.c +0 -126
  239. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setconcurrency.c +0 -53
  240. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setschedparam.c +0 -123
  241. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_setspecific.c +0 -167
  242. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_destroy.c +0 -111
  243. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_init.c +0 -123
  244. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_lock.c +0 -80
  245. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_trylock.c +0 -77
  246. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_spin_unlock.c +0 -71
  247. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_testcancel.c +0 -103
  248. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_timechange_handler_np.c +0 -108
  249. data/ext/noderb_extension/libuv/deps/pthread-win32/pthread_win32_attach_detach_np.c +0 -258
  250. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_MCS_lock.c +0 -278
  251. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_callUserDestroyRoutines.c +0 -232
  252. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_calloc.c +0 -56
  253. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_cond_check_need_init.c +0 -78
  254. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_getprocessors.c +0 -91
  255. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_is_attr.c +0 -47
  256. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_mutex_check_need_init.c +0 -92
  257. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_new.c +0 -94
  258. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processInitialize.c +0 -92
  259. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_processTerminate.c +0 -105
  260. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_relmillisecs.c +0 -132
  261. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_reuse.c +0 -151
  262. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_cancelwrwait.c +0 -50
  263. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_rwlock_check_need_init.c +0 -77
  264. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_semwait.c +0 -135
  265. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_spinlock_check_need_init.c +0 -78
  266. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadDestroy.c +0 -79
  267. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_threadStart.c +0 -357
  268. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_throw.c +0 -189
  269. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_timespec.c +0 -83
  270. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocCreate.c +0 -118
  271. data/ext/noderb_extension/libuv/deps/pthread-win32/ptw32_tkAssocDestroy.c +0 -114
  272. data/ext/noderb_extension/libuv/deps/pthread-win32/rwlock.c +0 -51
  273. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.c +0 -53
  274. data/ext/noderb_extension/libuv/deps/pthread-win32/sched.h +0 -183
  275. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_max.c +0 -134
  276. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_get_priority_min.c +0 -135
  277. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_getscheduler.c +0 -71
  278. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_setscheduler.c +0 -83
  279. data/ext/noderb_extension/libuv/deps/pthread-win32/sched_yield.c +0 -71
  280. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_close.c +0 -58
  281. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_destroy.c +0 -144
  282. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_getvalue.c +0 -110
  283. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_init.c +0 -169
  284. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_open.c +0 -58
  285. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post.c +0 -128
  286. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_post_multiple.c +0 -142
  287. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_timedwait.c +0 -238
  288. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_trywait.c +0 -117
  289. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_unlink.c +0 -58
  290. data/ext/noderb_extension/libuv/deps/pthread-win32/sem_wait.c +0 -187
  291. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.c +0 -69
  292. data/ext/noderb_extension/libuv/deps/pthread-win32/semaphore.h +0 -169
  293. data/ext/noderb_extension/libuv/deps/pthread-win32/signal.c +0 -179
  294. data/ext/noderb_extension/libuv/deps/pthread-win32/spin.c +0 -46
  295. data/ext/noderb_extension/libuv/deps/pthread-win32/sync.c +0 -43
  296. data/ext/noderb_extension/libuv/deps/pthread-win32/tsd.c +0 -44
  297. data/ext/noderb_extension/libuv/deps/pthread-win32/version.rc +0 -388
  298. data/ext/noderb_extension/libuv/deps/pthread-win32/w32_CancelableWait.c +0 -161
  299. data/ext/noderb_extension/libuv/doc/iocp-links.html +0 -574
  300. data/ext/noderb_extension/libuv/src/uv-unix.c +0 -2421
  301. data/ext/noderb_extension/libuv/src/win/ntdll.h +0 -130
  302. /data/ext/noderb_extension/libuv/include/{ev.h → uv-private/ev.h} +0 -0
  303. /data/ext/noderb_extension/libuv/include/{ngx-queue.h → uv-private/ngx-queue.h} +0 -0
  304. /data/ext/noderb_extension/libuv/include/{tree.h → uv-private/tree.h} +0 -0
  305. /data/ext/noderb_extension/libuv/src/{uv-cygwin.c → unix/cygwin.c} +0 -0
  306. /data/ext/noderb_extension/libuv/src/{uv-darwin.c → unix/darwin.c} +0 -0
  307. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/Changes +0 -0
  308. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/LICENSE +0 -0
  309. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/Makefile.am +0 -0
  310. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/aclocal.m4 +0 -0
  311. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/autogen.sh +0 -0
  312. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config.h.in +0 -0
  313. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_cygwin.h +0 -0
  314. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_freebsd.h +0 -0
  315. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/config_sunos.h +0 -0
  316. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/configure.ac +0 -0
  317. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/demo.c +0 -0
  318. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/ecb.h +0 -0
  319. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.3 +0 -0
  320. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/eio.pod +0 -0
  321. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/libeio.m4 +0 -0
  322. /data/ext/noderb_extension/libuv/src/{eio → unix/eio}/xthread.h +0 -0
  323. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Changes +0 -0
  324. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/LICENSE +0 -0
  325. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Makefile.am +0 -0
  326. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/Makefile.in +0 -0
  327. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/README +0 -0
  328. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/aclocal.m4 +0 -0
  329. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/autogen.sh +0 -0
  330. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.guess +0 -0
  331. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.h.in +0 -0
  332. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config.sub +0 -0
  333. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_cygwin.h +0 -0
  334. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_darwin.h +0 -0
  335. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_freebsd.h +0 -0
  336. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/config_sunos.h +0 -0
  337. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/configure +0 -0
  338. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/configure.ac +0 -0
  339. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/depcomp +0 -0
  340. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev++.h +0 -0
  341. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.3 +0 -0
  342. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.c +0 -0
  343. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev.pod +0 -0
  344. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_epoll.c +0 -0
  345. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_kqueue.c +0 -0
  346. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_poll.c +0 -0
  347. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_port.c +0 -0
  348. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_select.c +0 -0
  349. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_vars.h +0 -0
  350. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_win32.c +0 -0
  351. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ev_wrap.h +0 -0
  352. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/event.c +0 -0
  353. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/event.h +0 -0
  354. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/install-sh +0 -0
  355. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/libev.m4 +0 -0
  356. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/ltmain.sh +0 -0
  357. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/missing +0 -0
  358. /data/ext/noderb_extension/libuv/src/{ev → unix/ev}/mkinstalldirs +0 -0
  359. /data/ext/noderb_extension/libuv/src/{uv-freebsd.c → unix/freebsd.c} +0 -0
  360. /data/ext/noderb_extension/libuv/src/{uv-linux.c → unix/linux.c} +0 -0
  361. /data/ext/noderb_extension/libuv/src/{uv-sunos.c → unix/sunos.c} +0 -0
@@ -1,1368 +0,0 @@
1
- /* This is an implementation of the threads API of POSIX 1003.1-2001.
2
- *
3
- * --------------------------------------------------------------------------
4
- *
5
- * Pthreads-win32 - POSIX Threads Library for Win32
6
- * Copyright(C) 1998 John E. Bossom
7
- * Copyright(C) 1999,2005 Pthreads-win32 contributors
8
- *
9
- * Contact Email: rpj@callisto.canberra.edu.au
10
- *
11
- * The current list of contributors is contained
12
- * in the file CONTRIBUTORS included with the source
13
- * code distribution. The list can also be seen at the
14
- * following World Wide Web location:
15
- * http://sources.redhat.com/pthreads-win32/contributors.html
16
- *
17
- * This library is free software; you can redistribute it and/or
18
- * modify it under the terms of the GNU Lesser General Public
19
- * License as published by the Free Software Foundation; either
20
- * version 2 of the License, or (at your option) any later version.
21
- *
22
- * This library is distributed in the hope that it will be useful,
23
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
24
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
25
- * Lesser General Public License for more details.
26
- *
27
- * You should have received a copy of the GNU Lesser General Public
28
- * License along with this library in the file COPYING.LIB;
29
- * if not, write to the Free Software Foundation, Inc.,
30
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
31
- */
32
-
33
- #if !defined( PTHREAD_H )
34
- #define PTHREAD_H
35
-
36
- /*
37
- * See the README file for an explanation of the pthreads-win32 version
38
- * numbering scheme and how the DLL is named etc.
39
- */
40
- #define PTW32_VERSION 2,9,0,0
41
- #define PTW32_VERSION_STRING "2, 9, 0, 0\0"
42
-
43
- /* There are three implementations of cancel cleanup.
44
- * Note that pthread.h is included in both application
45
- * compilation units and also internally for the library.
46
- * The code here and within the library aims to work
47
- * for all reasonable combinations of environments.
48
- *
49
- * The three implementations are:
50
- *
51
- * WIN32 SEH
52
- * C
53
- * C++
54
- *
55
- * Please note that exiting a push/pop block via
56
- * "return", "exit", "break", or "continue" will
57
- * lead to different behaviour amongst applications
58
- * depending upon whether the library was built
59
- * using SEH, C++, or C. For example, a library built
60
- * with SEH will call the cleanup routine, while both
61
- * C++ and C built versions will not.
62
- */
63
-
64
- /*
65
- * Define defaults for cleanup code.
66
- * Note: Unless the build explicitly defines one of the following, then
67
- * we default to standard C style cleanup. This style uses setjmp/longjmp
68
- * in the cancelation and thread exit implementations and therefore won't
69
- * do stack unwinding if linked to applications that have it (e.g.
70
- * C++ apps). This is currently consistent with most/all commercial Unix
71
- * POSIX threads implementations.
72
- */
73
- #if !defined( __CLEANUP_SEH ) && !defined( __CLEANUP_CXX ) && !defined( __CLEANUP_C )
74
- # define __CLEANUP_C
75
- #endif
76
-
77
- #if defined( __CLEANUP_SEH ) && ( !defined( _MSC_VER ) && !defined(PTW32_RC_MSC))
78
- #error ERROR [__FILE__, line __LINE__]: SEH is not supported for this compiler.
79
- #endif
80
-
81
- /*
82
- * Stop here if we are being included by the resource compiler.
83
- */
84
- #if !defined(RC_INVOKED)
85
-
86
- #undef PTW32_LEVEL
87
-
88
- #if defined(_POSIX_SOURCE)
89
- #define PTW32_LEVEL 0
90
- /* Early POSIX */
91
- #endif
92
-
93
- #if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309
94
- #undef PTW32_LEVEL
95
- #define PTW32_LEVEL 1
96
- /* Include 1b, 1c and 1d */
97
- #endif
98
-
99
- #if defined(INCLUDE_NP)
100
- #undef PTW32_LEVEL
101
- #define PTW32_LEVEL 2
102
- /* Include Non-Portable extensions */
103
- #endif
104
-
105
- #define PTW32_LEVEL_MAX 3
106
-
107
- #if ( defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 200112 ) || !defined(PTW32_LEVEL)
108
- #define PTW32_LEVEL PTW32_LEVEL_MAX
109
- /* Include everything */
110
- #endif
111
-
112
- #if defined(_UWIN)
113
- # define HAVE_STRUCT_TIMESPEC 1
114
- # define HAVE_SIGNAL_H 1
115
- # undef HAVE_PTW32_CONFIG_H
116
- # pragma comment(lib, "pthread")
117
- #endif
118
-
119
- /*
120
- * -------------------------------------------------------------
121
- *
122
- *
123
- * Module: pthread.h
124
- *
125
- * Purpose:
126
- * Provides an implementation of PThreads based upon the
127
- * standard:
128
- *
129
- * POSIX 1003.1-2001
130
- * and
131
- * The Single Unix Specification version 3
132
- *
133
- * (these two are equivalent)
134
- *
135
- * in order to enhance code portability between Windows,
136
- * various commercial Unix implementations, and Linux.
137
- *
138
- * See the ANNOUNCE file for a full list of conforming
139
- * routines and defined constants, and a list of missing
140
- * routines and constants not defined in this implementation.
141
- *
142
- * Authors:
143
- * There have been many contributors to this library.
144
- * The initial implementation was contributed by
145
- * John Bossom, and several others have provided major
146
- * sections or revisions of parts of the implementation.
147
- * Often significant effort has been contributed to
148
- * find and fix important bugs and other problems to
149
- * improve the reliability of the library, which sometimes
150
- * is not reflected in the amount of code which changed as
151
- * result.
152
- * As much as possible, the contributors are acknowledged
153
- * in the ChangeLog file in the source code distribution
154
- * where their changes are noted in detail.
155
- *
156
- * Contributors are listed in the CONTRIBUTORS file.
157
- *
158
- * As usual, all bouquets go to the contributors, and all
159
- * brickbats go to the project maintainer.
160
- *
161
- * Maintainer:
162
- * The code base for this project is coordinated and
163
- * eventually pre-tested, packaged, and made available by
164
- *
165
- * Ross Johnson <rpj@callisto.canberra.edu.au>
166
- *
167
- * QA Testers:
168
- * Ultimately, the library is tested in the real world by
169
- * a host of competent and demanding scientists and
170
- * engineers who report bugs and/or provide solutions
171
- * which are then fixed or incorporated into subsequent
172
- * versions of the library. Each time a bug is fixed, a
173
- * test case is written to prove the fix and ensure
174
- * that later changes to the code don't reintroduce the
175
- * same error. The number of test cases is slowly growing
176
- * and therefore so is the code reliability.
177
- *
178
- * Compliance:
179
- * See the file ANNOUNCE for the list of implemented
180
- * and not-implemented routines and defined options.
181
- * Of course, these are all defined is this file as well.
182
- *
183
- * Web site:
184
- * The source code and other information about this library
185
- * are available from
186
- *
187
- * http://sources.redhat.com/pthreads-win32/
188
- *
189
- * -------------------------------------------------------------
190
- */
191
-
192
- /* Try to avoid including windows.h */
193
- #if (defined(__MINGW64__) || defined(__MINGW32__)) && defined(__cplusplus)
194
- #define PTW32_INCLUDE_WINDOWS_H
195
- #endif
196
-
197
- #if defined(PTW32_INCLUDE_WINDOWS_H)
198
- #include <windows.h>
199
- #endif
200
-
201
- #if defined(_MSC_VER) && _MSC_VER < 1300 || defined(__DMC__)
202
- /*
203
- * VC++6.0 or early compiler's header has no DWORD_PTR type.
204
- */
205
- typedef unsigned long DWORD_PTR;
206
- typedef unsigned long ULONG_PTR;
207
- #endif
208
- /*
209
- * -----------------
210
- * autoconf switches
211
- * -----------------
212
- */
213
-
214
- #if defined(HAVE_PTW32_CONFIG_H)
215
- #include "config.h"
216
- #endif /* HAVE_PTW32_CONFIG_H */
217
-
218
- #if !defined(NEED_FTIME)
219
- #include <time.h>
220
- #else /* NEED_FTIME */
221
- /* use native WIN32 time API */
222
- #endif /* NEED_FTIME */
223
-
224
- #if defined(HAVE_SIGNAL_H)
225
- #include <signal.h>
226
- #endif /* HAVE_SIGNAL_H */
227
-
228
- #include <limits.h>
229
-
230
- /*
231
- * Boolean values to make us independent of system includes.
232
- */
233
- enum {
234
- PTW32_FALSE = 0,
235
- PTW32_TRUE = (! PTW32_FALSE)
236
- };
237
-
238
- /*
239
- * This is a duplicate of what is in the autoconf config.h,
240
- * which is only used when building the pthread-win32 libraries.
241
- */
242
-
243
- #if !defined(PTW32_CONFIG_H)
244
- # if defined(WINCE)
245
- # define NEED_ERRNO
246
- # define NEED_SEM
247
- # endif
248
- # if defined(__MINGW64__)
249
- # define HAVE_STRUCT_TIMESPEC
250
- # define HAVE_MODE_T
251
- # elif defined(_UWIN) || defined(__MINGW32__)
252
- # define HAVE_MODE_T
253
- # endif
254
- #endif
255
-
256
- /*
257
- *
258
- */
259
-
260
- #if PTW32_LEVEL >= PTW32_LEVEL_MAX
261
- #if defined(NEED_ERRNO)
262
- #include "need_errno.h"
263
- #else
264
- #include <errno.h>
265
- #endif
266
- #endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
267
-
268
- /*
269
- * Several systems don't define some error numbers.
270
- */
271
- #if !defined(ENOTSUP)
272
- # define ENOTSUP 48 /* This is the value in Solaris. */
273
- #endif
274
-
275
- #if !defined(ETIMEDOUT)
276
- # define ETIMEDOUT 10060 /* Same as WSAETIMEDOUT */
277
- #endif
278
-
279
- #if !defined(ENOSYS)
280
- # define ENOSYS 140 /* Semi-arbitrary value */
281
- #endif
282
-
283
- #if !defined(EDEADLK)
284
- # if defined(EDEADLOCK)
285
- # define EDEADLK EDEADLOCK
286
- # else
287
- # define EDEADLK 36 /* This is the value in MSVC. */
288
- # endif
289
- #endif
290
-
291
- /* POSIX 2008 - related to robust mutexes */
292
- #if !defined(EOWNERDEAD)
293
- # define EOWNERDEAD 43
294
- #endif
295
- #if !defined(ENOTRECOVERABLE)
296
- # define ENOTRECOVERABLE 44
297
- #endif
298
-
299
- #include <sched.h>
300
-
301
- /*
302
- * To avoid including windows.h we define only those things that we
303
- * actually need from it.
304
- */
305
- #if !defined(PTW32_INCLUDE_WINDOWS_H)
306
- #if !defined(HANDLE)
307
- # define PTW32__HANDLE_DEF
308
- # define HANDLE void *
309
- #endif
310
- #if !defined(DWORD)
311
- # define PTW32__DWORD_DEF
312
- # define DWORD unsigned long
313
- #endif
314
- #endif
315
-
316
- #if !defined(HAVE_STRUCT_TIMESPEC)
317
- #define HAVE_STRUCT_TIMESPEC
318
- #if !defined(_TIMESPEC_DEFINED)
319
- #define _TIMESPEC_DEFINED
320
- struct timespec {
321
- time_t tv_sec;
322
- long tv_nsec;
323
- };
324
- #endif /* _TIMESPEC_DEFINED */
325
- #endif /* HAVE_STRUCT_TIMESPEC */
326
-
327
- #if !defined(SIG_BLOCK)
328
- #define SIG_BLOCK 0
329
- #endif /* SIG_BLOCK */
330
-
331
- #if !defined(SIG_UNBLOCK)
332
- #define SIG_UNBLOCK 1
333
- #endif /* SIG_UNBLOCK */
334
-
335
- #if !defined(SIG_SETMASK)
336
- #define SIG_SETMASK 2
337
- #endif /* SIG_SETMASK */
338
-
339
- #if defined(__cplusplus)
340
- extern "C"
341
- {
342
- #endif /* __cplusplus */
343
-
344
- /*
345
- * -------------------------------------------------------------
346
- *
347
- * POSIX 1003.1-2001 Options
348
- * =========================
349
- *
350
- * Options are normally set in <unistd.h>, which is not provided
351
- * with pthreads-win32.
352
- *
353
- * For conformance with the Single Unix Specification (version 3), all of the
354
- * options below are defined, and have a value of either -1 (not supported)
355
- * or 200112L (supported).
356
- *
357
- * These options can neither be left undefined nor have a value of 0, because
358
- * either indicates that sysconf(), which is not implemented, may be used at
359
- * runtime to check the status of the option.
360
- *
361
- * _POSIX_THREADS (== 200112L)
362
- * If == 200112L, you can use threads
363
- *
364
- * _POSIX_THREAD_ATTR_STACKSIZE (== 200112L)
365
- * If == 200112L, you can control the size of a thread's
366
- * stack
367
- * pthread_attr_getstacksize
368
- * pthread_attr_setstacksize
369
- *
370
- * _POSIX_THREAD_ATTR_STACKADDR (== -1)
371
- * If == 200112L, you can allocate and control a thread's
372
- * stack. If not supported, the following functions
373
- * will return ENOSYS, indicating they are not
374
- * supported:
375
- * pthread_attr_getstackaddr
376
- * pthread_attr_setstackaddr
377
- *
378
- * _POSIX_THREAD_PRIORITY_SCHEDULING (== -1)
379
- * If == 200112L, you can use realtime scheduling.
380
- * This option indicates that the behaviour of some
381
- * implemented functions conforms to the additional TPS
382
- * requirements in the standard. E.g. rwlocks favour
383
- * writers over readers when threads have equal priority.
384
- *
385
- * _POSIX_THREAD_PRIO_INHERIT (== -1)
386
- * If == 200112L, you can create priority inheritance
387
- * mutexes.
388
- * pthread_mutexattr_getprotocol +
389
- * pthread_mutexattr_setprotocol +
390
- *
391
- * _POSIX_THREAD_PRIO_PROTECT (== -1)
392
- * If == 200112L, you can create priority ceiling mutexes
393
- * Indicates the availability of:
394
- * pthread_mutex_getprioceiling
395
- * pthread_mutex_setprioceiling
396
- * pthread_mutexattr_getprioceiling
397
- * pthread_mutexattr_getprotocol +
398
- * pthread_mutexattr_setprioceiling
399
- * pthread_mutexattr_setprotocol +
400
- *
401
- * _POSIX_THREAD_PROCESS_SHARED (== -1)
402
- * If set, you can create mutexes and condition
403
- * variables that can be shared with another
404
- * process.If set, indicates the availability
405
- * of:
406
- * pthread_mutexattr_getpshared
407
- * pthread_mutexattr_setpshared
408
- * pthread_condattr_getpshared
409
- * pthread_condattr_setpshared
410
- *
411
- * _POSIX_THREAD_SAFE_FUNCTIONS (== 200112L)
412
- * If == 200112L you can use the special *_r library
413
- * functions that provide thread-safe behaviour
414
- *
415
- * _POSIX_READER_WRITER_LOCKS (== 200112L)
416
- * If == 200112L, you can use read/write locks
417
- *
418
- * _POSIX_SPIN_LOCKS (== 200112L)
419
- * If == 200112L, you can use spin locks
420
- *
421
- * _POSIX_BARRIERS (== 200112L)
422
- * If == 200112L, you can use barriers
423
- *
424
- * + These functions provide both 'inherit' and/or
425
- * 'protect' protocol, based upon these macro
426
- * settings.
427
- *
428
- * -------------------------------------------------------------
429
- */
430
-
431
- /*
432
- * POSIX Options
433
- */
434
- #undef _POSIX_THREADS
435
- #define _POSIX_THREADS 200809L
436
-
437
- #undef _POSIX_READER_WRITER_LOCKS
438
- #define _POSIX_READER_WRITER_LOCKS 200809L
439
-
440
- #undef _POSIX_SPIN_LOCKS
441
- #define _POSIX_SPIN_LOCKS 200809L
442
-
443
- #undef _POSIX_BARRIERS
444
- #define _POSIX_BARRIERS 200809L
445
-
446
- #undef _POSIX_THREAD_SAFE_FUNCTIONS
447
- #define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
448
-
449
- #undef _POSIX_THREAD_ATTR_STACKSIZE
450
- #define _POSIX_THREAD_ATTR_STACKSIZE 200809L
451
-
452
- /*
453
- * The following options are not supported
454
- */
455
- #undef _POSIX_THREAD_ATTR_STACKADDR
456
- #define _POSIX_THREAD_ATTR_STACKADDR -1
457
-
458
- #undef _POSIX_THREAD_PRIO_INHERIT
459
- #define _POSIX_THREAD_PRIO_INHERIT -1
460
-
461
- #undef _POSIX_THREAD_PRIO_PROTECT
462
- #define _POSIX_THREAD_PRIO_PROTECT -1
463
-
464
- /* TPS is not fully supported. */
465
- #undef _POSIX_THREAD_PRIORITY_SCHEDULING
466
- #define _POSIX_THREAD_PRIORITY_SCHEDULING -1
467
-
468
- #undef _POSIX_THREAD_PROCESS_SHARED
469
- #define _POSIX_THREAD_PROCESS_SHARED -1
470
-
471
-
472
- /*
473
- * POSIX 1003.1-2001 Limits
474
- * ===========================
475
- *
476
- * These limits are normally set in <limits.h>, which is not provided with
477
- * pthreads-win32.
478
- *
479
- * PTHREAD_DESTRUCTOR_ITERATIONS
480
- * Maximum number of attempts to destroy
481
- * a thread's thread-specific data on
482
- * termination (must be at least 4)
483
- *
484
- * PTHREAD_KEYS_MAX
485
- * Maximum number of thread-specific data keys
486
- * available per process (must be at least 128)
487
- *
488
- * PTHREAD_STACK_MIN
489
- * Minimum supported stack size for a thread
490
- *
491
- * PTHREAD_THREADS_MAX
492
- * Maximum number of threads supported per
493
- * process (must be at least 64).
494
- *
495
- * SEM_NSEMS_MAX
496
- * The maximum number of semaphores a process can have.
497
- * (must be at least 256)
498
- *
499
- * SEM_VALUE_MAX
500
- * The maximum value a semaphore can have.
501
- * (must be at least 32767)
502
- *
503
- */
504
- #undef _POSIX_THREAD_DESTRUCTOR_ITERATIONS
505
- #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
506
-
507
- #undef PTHREAD_DESTRUCTOR_ITERATIONS
508
- #define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
509
-
510
- #undef _POSIX_THREAD_KEYS_MAX
511
- #define _POSIX_THREAD_KEYS_MAX 128
512
-
513
- #undef PTHREAD_KEYS_MAX
514
- #define PTHREAD_KEYS_MAX _POSIX_THREAD_KEYS_MAX
515
-
516
- #undef PTHREAD_STACK_MIN
517
- #define PTHREAD_STACK_MIN 0
518
-
519
- #undef _POSIX_THREAD_THREADS_MAX
520
- #define _POSIX_THREAD_THREADS_MAX 64
521
-
522
- /* Arbitrary value */
523
- #undef PTHREAD_THREADS_MAX
524
- #define PTHREAD_THREADS_MAX 2019
525
-
526
- #undef _POSIX_SEM_NSEMS_MAX
527
- #define _POSIX_SEM_NSEMS_MAX 256
528
-
529
- /* Arbitrary value */
530
- #undef SEM_NSEMS_MAX
531
- #define SEM_NSEMS_MAX 1024
532
-
533
- #undef _POSIX_SEM_VALUE_MAX
534
- #define _POSIX_SEM_VALUE_MAX 32767
535
-
536
- #undef SEM_VALUE_MAX
537
- #define SEM_VALUE_MAX INT_MAX
538
-
539
-
540
- #if defined(__GNUC__) && !defined(__declspec)
541
- # error Please upgrade your GNU compiler to one that supports __declspec.
542
- #endif
543
-
544
- /*
545
- * When building the library, you should define PTW32_BUILD so that
546
- * the variables/functions are exported correctly. When using the library,
547
- * do NOT define PTW32_BUILD, and then the variables/functions will
548
- * be imported correctly.
549
- */
550
- #if !defined(PTW32_STATIC_LIB)
551
- # if defined(PTW32_BUILD)
552
- # define PTW32_DLLPORT __declspec (dllexport)
553
- # else
554
- # define PTW32_DLLPORT __declspec (dllimport)
555
- # endif
556
- #else
557
- # define PTW32_DLLPORT
558
- #endif
559
-
560
- /*
561
- * The Open Watcom C/C++ compiler uses a non-standard calling convention
562
- * that passes function args in registers unless __cdecl is explicitly specified
563
- * in exposed function prototypes.
564
- *
565
- * We force all calls to cdecl even though this could slow Watcom code down
566
- * slightly. If you know that the Watcom compiler will be used to build both
567
- * the DLL and application, then you can probably define this as a null string.
568
- * Remember that pthread.h (this file) is used for both the DLL and application builds.
569
- */
570
- #define PTW32_CDECL __cdecl
571
-
572
- #if defined(_UWIN) && PTW32_LEVEL >= PTW32_LEVEL_MAX
573
- # include <sys/types.h>
574
- #else
575
- /*
576
- * Generic handle type - intended to extend uniqueness beyond
577
- * that available with a simple pointer. It should scale for either
578
- * IA-32 or IA-64.
579
- */
580
- typedef struct {
581
- void * p; /* Pointer to actual object */
582
- unsigned int x; /* Extra information - reuse count etc */
583
- } ptw32_handle_t;
584
-
585
- typedef ptw32_handle_t pthread_t;
586
- typedef struct pthread_attr_t_ * pthread_attr_t;
587
- typedef struct pthread_once_t_ pthread_once_t;
588
- typedef struct pthread_key_t_ * pthread_key_t;
589
- typedef struct pthread_mutex_t_ * pthread_mutex_t;
590
- typedef struct pthread_mutexattr_t_ * pthread_mutexattr_t;
591
- typedef struct pthread_cond_t_ * pthread_cond_t;
592
- typedef struct pthread_condattr_t_ * pthread_condattr_t;
593
- #endif
594
- typedef struct pthread_rwlock_t_ * pthread_rwlock_t;
595
- typedef struct pthread_rwlockattr_t_ * pthread_rwlockattr_t;
596
- typedef struct pthread_spinlock_t_ * pthread_spinlock_t;
597
- typedef struct pthread_barrier_t_ * pthread_barrier_t;
598
- typedef struct pthread_barrierattr_t_ * pthread_barrierattr_t;
599
-
600
- /*
601
- * ====================
602
- * ====================
603
- * POSIX Threads
604
- * ====================
605
- * ====================
606
- */
607
-
608
- enum {
609
- /*
610
- * pthread_attr_{get,set}detachstate
611
- */
612
- PTHREAD_CREATE_JOINABLE = 0, /* Default */
613
- PTHREAD_CREATE_DETACHED = 1,
614
-
615
- /*
616
- * pthread_attr_{get,set}inheritsched
617
- */
618
- PTHREAD_INHERIT_SCHED = 0,
619
- PTHREAD_EXPLICIT_SCHED = 1, /* Default */
620
-
621
- /*
622
- * pthread_{get,set}scope
623
- */
624
- PTHREAD_SCOPE_PROCESS = 0,
625
- PTHREAD_SCOPE_SYSTEM = 1, /* Default */
626
-
627
- /*
628
- * pthread_setcancelstate paramters
629
- */
630
- PTHREAD_CANCEL_ENABLE = 0, /* Default */
631
- PTHREAD_CANCEL_DISABLE = 1,
632
-
633
- /*
634
- * pthread_setcanceltype parameters
635
- */
636
- PTHREAD_CANCEL_ASYNCHRONOUS = 0,
637
- PTHREAD_CANCEL_DEFERRED = 1, /* Default */
638
-
639
- /*
640
- * pthread_mutexattr_{get,set}pshared
641
- * pthread_condattr_{get,set}pshared
642
- */
643
- PTHREAD_PROCESS_PRIVATE = 0,
644
- PTHREAD_PROCESS_SHARED = 1,
645
-
646
- /*
647
- * pthread_mutexattr_{get,set}robust
648
- */
649
- PTHREAD_MUTEX_STALLED = 0, /* Default */
650
- PTHREAD_MUTEX_ROBUST = 1,
651
-
652
- /*
653
- * pthread_barrier_wait
654
- */
655
- PTHREAD_BARRIER_SERIAL_THREAD = -1
656
- };
657
-
658
- /*
659
- * ====================
660
- * ====================
661
- * Cancelation
662
- * ====================
663
- * ====================
664
- */
665
- #define PTHREAD_CANCELED ((void *)(size_t) -1)
666
-
667
-
668
- /*
669
- * ====================
670
- * ====================
671
- * Once Key
672
- * ====================
673
- * ====================
674
- */
675
- #define PTHREAD_ONCE_INIT { PTW32_FALSE, 0, 0, 0}
676
-
677
- struct pthread_once_t_
678
- {
679
- int done; /* indicates if user function has been executed */
680
- void * lock;
681
- int reserved1;
682
- int reserved2;
683
- };
684
-
685
-
686
- /*
687
- * ====================
688
- * ====================
689
- * Object initialisers
690
- * ====================
691
- * ====================
692
- */
693
- #define PTHREAD_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -1)
694
- #define PTHREAD_RECURSIVE_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -2)
695
- #define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER ((pthread_mutex_t)(size_t) -3)
696
-
697
- /*
698
- * Compatibility with LinuxThreads
699
- */
700
- #define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP PTHREAD_RECURSIVE_MUTEX_INITIALIZER
701
- #define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP PTHREAD_ERRORCHECK_MUTEX_INITIALIZER
702
-
703
- #define PTHREAD_COND_INITIALIZER ((pthread_cond_t)(size_t) -1)
704
-
705
- #define PTHREAD_RWLOCK_INITIALIZER ((pthread_rwlock_t)(size_t) -1)
706
-
707
- #define PTHREAD_SPINLOCK_INITIALIZER ((pthread_spinlock_t)(size_t) -1)
708
-
709
-
710
- /*
711
- * Mutex types.
712
- */
713
- enum
714
- {
715
- /* Compatibility with LinuxThreads */
716
- PTHREAD_MUTEX_FAST_NP,
717
- PTHREAD_MUTEX_RECURSIVE_NP,
718
- PTHREAD_MUTEX_ERRORCHECK_NP,
719
- PTHREAD_MUTEX_TIMED_NP = PTHREAD_MUTEX_FAST_NP,
720
- PTHREAD_MUTEX_ADAPTIVE_NP = PTHREAD_MUTEX_FAST_NP,
721
- /* For compatibility with POSIX */
722
- PTHREAD_MUTEX_NORMAL = PTHREAD_MUTEX_FAST_NP,
723
- PTHREAD_MUTEX_RECURSIVE = PTHREAD_MUTEX_RECURSIVE_NP,
724
- PTHREAD_MUTEX_ERRORCHECK = PTHREAD_MUTEX_ERRORCHECK_NP,
725
- PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL
726
- };
727
-
728
-
729
- typedef struct ptw32_cleanup_t ptw32_cleanup_t;
730
-
731
- #if defined(_MSC_VER)
732
- /* Disable MSVC 'anachronism used' warning */
733
- #pragma warning( disable : 4229 )
734
- #endif
735
-
736
- typedef void (* PTW32_CDECL ptw32_cleanup_callback_t)(void *);
737
-
738
- #if defined(_MSC_VER)
739
- #pragma warning( default : 4229 )
740
- #endif
741
-
742
- struct ptw32_cleanup_t
743
- {
744
- ptw32_cleanup_callback_t routine;
745
- void *arg;
746
- struct ptw32_cleanup_t *prev;
747
- };
748
-
749
- #if defined(__CLEANUP_SEH)
750
- /*
751
- * WIN32 SEH version of cancel cleanup.
752
- */
753
-
754
- #define pthread_cleanup_push( _rout, _arg ) \
755
- { \
756
- ptw32_cleanup_t _cleanup; \
757
- \
758
- _cleanup.routine = (ptw32_cleanup_callback_t)(_rout); \
759
- _cleanup.arg = (_arg); \
760
- __try \
761
- { \
762
-
763
- #define pthread_cleanup_pop( _execute ) \
764
- } \
765
- __finally \
766
- { \
767
- if( _execute || AbnormalTermination()) \
768
- { \
769
- (*(_cleanup.routine))( _cleanup.arg ); \
770
- } \
771
- } \
772
- }
773
-
774
- #else /* __CLEANUP_SEH */
775
-
776
- #if defined(__CLEANUP_C)
777
-
778
- /*
779
- * C implementation of PThreads cancel cleanup
780
- */
781
-
782
- #define pthread_cleanup_push( _rout, _arg ) \
783
- { \
784
- ptw32_cleanup_t _cleanup; \
785
- \
786
- ptw32_push_cleanup( &_cleanup, (ptw32_cleanup_callback_t) (_rout), (_arg) ); \
787
-
788
- #define pthread_cleanup_pop( _execute ) \
789
- (void) ptw32_pop_cleanup( _execute ); \
790
- }
791
-
792
- #else /* __CLEANUP_C */
793
-
794
- #if defined(__CLEANUP_CXX)
795
-
796
- /*
797
- * C++ version of cancel cleanup.
798
- * - John E. Bossom.
799
- */
800
-
801
- class PThreadCleanup {
802
- /*
803
- * PThreadCleanup
804
- *
805
- * Purpose
806
- * This class is a C++ helper class that is
807
- * used to implement pthread_cleanup_push/
808
- * pthread_cleanup_pop.
809
- * The destructor of this class automatically
810
- * pops the pushed cleanup routine regardless
811
- * of how the code exits the scope
812
- * (i.e. such as by an exception)
813
- */
814
- ptw32_cleanup_callback_t cleanUpRout;
815
- void * obj;
816
- int executeIt;
817
-
818
- public:
819
- PThreadCleanup() :
820
- cleanUpRout( 0 ),
821
- obj( 0 ),
822
- executeIt( 0 )
823
- /*
824
- * No cleanup performed
825
- */
826
- {
827
- }
828
-
829
- PThreadCleanup(
830
- ptw32_cleanup_callback_t routine,
831
- void * arg ) :
832
- cleanUpRout( routine ),
833
- obj( arg ),
834
- executeIt( 1 )
835
- /*
836
- * Registers a cleanup routine for 'arg'
837
- */
838
- {
839
- }
840
-
841
- ~PThreadCleanup()
842
- {
843
- if ( executeIt && ((void *) cleanUpRout != (void *) 0) )
844
- {
845
- (void) (*cleanUpRout)( obj );
846
- }
847
- }
848
-
849
- void execute( int exec )
850
- {
851
- executeIt = exec;
852
- }
853
- };
854
-
855
- /*
856
- * C++ implementation of PThreads cancel cleanup;
857
- * This implementation takes advantage of a helper
858
- * class who's destructor automatically calls the
859
- * cleanup routine if we exit our scope weirdly
860
- */
861
- #define pthread_cleanup_push( _rout, _arg ) \
862
- { \
863
- PThreadCleanup cleanup((ptw32_cleanup_callback_t)(_rout), \
864
- (void *) (_arg) );
865
-
866
- #define pthread_cleanup_pop( _execute ) \
867
- cleanup.execute( _execute ); \
868
- }
869
-
870
- #else
871
-
872
- #error ERROR [__FILE__, line __LINE__]: Cleanup type undefined.
873
-
874
- #endif /* __CLEANUP_CXX */
875
-
876
- #endif /* __CLEANUP_C */
877
-
878
- #endif /* __CLEANUP_SEH */
879
-
880
- /*
881
- * ===============
882
- * ===============
883
- * Methods
884
- * ===============
885
- * ===============
886
- */
887
-
888
- /*
889
- * PThread Attribute Functions
890
- */
891
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_init (pthread_attr_t * attr);
892
-
893
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_destroy (pthread_attr_t * attr);
894
-
895
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_getdetachstate (const pthread_attr_t * attr,
896
- int *detachstate);
897
-
898
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_getstackaddr (const pthread_attr_t * attr,
899
- void **stackaddr);
900
-
901
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_getstacksize (const pthread_attr_t * attr,
902
- size_t * stacksize);
903
-
904
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_setdetachstate (pthread_attr_t * attr,
905
- int detachstate);
906
-
907
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_setstackaddr (pthread_attr_t * attr,
908
- void *stackaddr);
909
-
910
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_setstacksize (pthread_attr_t * attr,
911
- size_t stacksize);
912
-
913
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_getschedparam (const pthread_attr_t *attr,
914
- struct sched_param *param);
915
-
916
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_setschedparam (pthread_attr_t *attr,
917
- const struct sched_param *param);
918
-
919
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_setschedpolicy (pthread_attr_t *,
920
- int);
921
-
922
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_getschedpolicy (const pthread_attr_t *,
923
- int *);
924
-
925
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_setinheritsched(pthread_attr_t * attr,
926
- int inheritsched);
927
-
928
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_getinheritsched(const pthread_attr_t * attr,
929
- int * inheritsched);
930
-
931
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_setscope (pthread_attr_t *,
932
- int);
933
-
934
- PTW32_DLLPORT int PTW32_CDECL pthread_attr_getscope (const pthread_attr_t *,
935
- int *);
936
-
937
- /*
938
- * PThread Functions
939
- */
940
- PTW32_DLLPORT int PTW32_CDECL pthread_create (pthread_t * tid,
941
- const pthread_attr_t * attr,
942
- void *(*start) (void *),
943
- void *arg);
944
-
945
- PTW32_DLLPORT int PTW32_CDECL pthread_detach (pthread_t tid);
946
-
947
- PTW32_DLLPORT int PTW32_CDECL pthread_equal (pthread_t t1,
948
- pthread_t t2);
949
-
950
- PTW32_DLLPORT void PTW32_CDECL pthread_exit (void *value_ptr);
951
-
952
- PTW32_DLLPORT int PTW32_CDECL pthread_join (pthread_t thread,
953
- void **value_ptr);
954
-
955
- PTW32_DLLPORT pthread_t PTW32_CDECL pthread_self (void);
956
-
957
- PTW32_DLLPORT int PTW32_CDECL pthread_cancel (pthread_t thread);
958
-
959
- PTW32_DLLPORT int PTW32_CDECL pthread_setcancelstate (int state,
960
- int *oldstate);
961
-
962
- PTW32_DLLPORT int PTW32_CDECL pthread_setcanceltype (int type,
963
- int *oldtype);
964
-
965
- PTW32_DLLPORT void PTW32_CDECL pthread_testcancel (void);
966
-
967
- PTW32_DLLPORT int PTW32_CDECL pthread_once (pthread_once_t * once_control,
968
- void (*init_routine) (void));
969
-
970
- #if PTW32_LEVEL >= PTW32_LEVEL_MAX
971
- PTW32_DLLPORT ptw32_cleanup_t * PTW32_CDECL ptw32_pop_cleanup (int execute);
972
-
973
- PTW32_DLLPORT void PTW32_CDECL ptw32_push_cleanup (ptw32_cleanup_t * cleanup,
974
- void (*routine) (void *),
975
- void *arg);
976
- #endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
977
-
978
- /*
979
- * Thread Specific Data Functions
980
- */
981
- PTW32_DLLPORT int PTW32_CDECL pthread_key_create (pthread_key_t * key,
982
- void (*destructor) (void *));
983
-
984
- PTW32_DLLPORT int PTW32_CDECL pthread_key_delete (pthread_key_t key);
985
-
986
- PTW32_DLLPORT int PTW32_CDECL pthread_setspecific (pthread_key_t key,
987
- const void *value);
988
-
989
- PTW32_DLLPORT void * PTW32_CDECL pthread_getspecific (pthread_key_t key);
990
-
991
-
992
- /*
993
- * Mutex Attribute Functions
994
- */
995
- PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_init (pthread_mutexattr_t * attr);
996
-
997
- PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_destroy (pthread_mutexattr_t * attr);
998
-
999
- PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getpshared (const pthread_mutexattr_t
1000
- * attr,
1001
- int *pshared);
1002
-
1003
- PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_setpshared (pthread_mutexattr_t * attr,
1004
- int pshared);
1005
-
1006
- PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_settype (pthread_mutexattr_t * attr, int kind);
1007
- PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_gettype (const pthread_mutexattr_t * attr, int *kind);
1008
-
1009
- PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_setrobust(
1010
- pthread_mutexattr_t *attr,
1011
- int robust);
1012
- PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getrobust(
1013
- const pthread_mutexattr_t * attr,
1014
- int * robust);
1015
-
1016
- /*
1017
- * Barrier Attribute Functions
1018
- */
1019
- PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_init (pthread_barrierattr_t * attr);
1020
-
1021
- PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_destroy (pthread_barrierattr_t * attr);
1022
-
1023
- PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_getpshared (const pthread_barrierattr_t
1024
- * attr,
1025
- int *pshared);
1026
-
1027
- PTW32_DLLPORT int PTW32_CDECL pthread_barrierattr_setpshared (pthread_barrierattr_t * attr,
1028
- int pshared);
1029
-
1030
- /*
1031
- * Mutex Functions
1032
- */
1033
- PTW32_DLLPORT int PTW32_CDECL pthread_mutex_init (pthread_mutex_t * mutex,
1034
- const pthread_mutexattr_t * attr);
1035
-
1036
- PTW32_DLLPORT int PTW32_CDECL pthread_mutex_destroy (pthread_mutex_t * mutex);
1037
-
1038
- PTW32_DLLPORT int PTW32_CDECL pthread_mutex_lock (pthread_mutex_t * mutex);
1039
-
1040
- PTW32_DLLPORT int PTW32_CDECL pthread_mutex_timedlock(pthread_mutex_t * mutex,
1041
- const struct timespec *abstime);
1042
-
1043
- PTW32_DLLPORT int PTW32_CDECL pthread_mutex_trylock (pthread_mutex_t * mutex);
1044
-
1045
- PTW32_DLLPORT int PTW32_CDECL pthread_mutex_unlock (pthread_mutex_t * mutex);
1046
-
1047
- PTW32_DLLPORT int PTW32_CDECL pthread_mutex_consistent (pthread_mutex_t * mutex);
1048
-
1049
- /*
1050
- * Spinlock Functions
1051
- */
1052
- PTW32_DLLPORT int PTW32_CDECL pthread_spin_init (pthread_spinlock_t * lock, int pshared);
1053
-
1054
- PTW32_DLLPORT int PTW32_CDECL pthread_spin_destroy (pthread_spinlock_t * lock);
1055
-
1056
- PTW32_DLLPORT int PTW32_CDECL pthread_spin_lock (pthread_spinlock_t * lock);
1057
-
1058
- PTW32_DLLPORT int PTW32_CDECL pthread_spin_trylock (pthread_spinlock_t * lock);
1059
-
1060
- PTW32_DLLPORT int PTW32_CDECL pthread_spin_unlock (pthread_spinlock_t * lock);
1061
-
1062
- /*
1063
- * Barrier Functions
1064
- */
1065
- PTW32_DLLPORT int PTW32_CDECL pthread_barrier_init (pthread_barrier_t * barrier,
1066
- const pthread_barrierattr_t * attr,
1067
- unsigned int count);
1068
-
1069
- PTW32_DLLPORT int PTW32_CDECL pthread_barrier_destroy (pthread_barrier_t * barrier);
1070
-
1071
- PTW32_DLLPORT int PTW32_CDECL pthread_barrier_wait (pthread_barrier_t * barrier);
1072
-
1073
- /*
1074
- * Condition Variable Attribute Functions
1075
- */
1076
- PTW32_DLLPORT int PTW32_CDECL pthread_condattr_init (pthread_condattr_t * attr);
1077
-
1078
- PTW32_DLLPORT int PTW32_CDECL pthread_condattr_destroy (pthread_condattr_t * attr);
1079
-
1080
- PTW32_DLLPORT int PTW32_CDECL pthread_condattr_getpshared (const pthread_condattr_t * attr,
1081
- int *pshared);
1082
-
1083
- PTW32_DLLPORT int PTW32_CDECL pthread_condattr_setpshared (pthread_condattr_t * attr,
1084
- int pshared);
1085
-
1086
- /*
1087
- * Condition Variable Functions
1088
- */
1089
- PTW32_DLLPORT int PTW32_CDECL pthread_cond_init (pthread_cond_t * cond,
1090
- const pthread_condattr_t * attr);
1091
-
1092
- PTW32_DLLPORT int PTW32_CDECL pthread_cond_destroy (pthread_cond_t * cond);
1093
-
1094
- PTW32_DLLPORT int PTW32_CDECL pthread_cond_wait (pthread_cond_t * cond,
1095
- pthread_mutex_t * mutex);
1096
-
1097
- PTW32_DLLPORT int PTW32_CDECL pthread_cond_timedwait (pthread_cond_t * cond,
1098
- pthread_mutex_t * mutex,
1099
- const struct timespec *abstime);
1100
-
1101
- PTW32_DLLPORT int PTW32_CDECL pthread_cond_signal (pthread_cond_t * cond);
1102
-
1103
- PTW32_DLLPORT int PTW32_CDECL pthread_cond_broadcast (pthread_cond_t * cond);
1104
-
1105
- /*
1106
- * Scheduling
1107
- */
1108
- PTW32_DLLPORT int PTW32_CDECL pthread_setschedparam (pthread_t thread,
1109
- int policy,
1110
- const struct sched_param *param);
1111
-
1112
- PTW32_DLLPORT int PTW32_CDECL pthread_getschedparam (pthread_t thread,
1113
- int *policy,
1114
- struct sched_param *param);
1115
-
1116
- PTW32_DLLPORT int PTW32_CDECL pthread_setconcurrency (int);
1117
-
1118
- PTW32_DLLPORT int PTW32_CDECL pthread_getconcurrency (void);
1119
-
1120
- /*
1121
- * Read-Write Lock Functions
1122
- */
1123
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_init(pthread_rwlock_t *lock,
1124
- const pthread_rwlockattr_t *attr);
1125
-
1126
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_destroy(pthread_rwlock_t *lock);
1127
-
1128
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_tryrdlock(pthread_rwlock_t *);
1129
-
1130
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_trywrlock(pthread_rwlock_t *);
1131
-
1132
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_rdlock(pthread_rwlock_t *lock);
1133
-
1134
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_timedrdlock(pthread_rwlock_t *lock,
1135
- const struct timespec *abstime);
1136
-
1137
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_wrlock(pthread_rwlock_t *lock);
1138
-
1139
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_timedwrlock(pthread_rwlock_t *lock,
1140
- const struct timespec *abstime);
1141
-
1142
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlock_unlock(pthread_rwlock_t *lock);
1143
-
1144
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_init (pthread_rwlockattr_t * attr);
1145
-
1146
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_destroy (pthread_rwlockattr_t * attr);
1147
-
1148
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_getpshared (const pthread_rwlockattr_t * attr,
1149
- int *pshared);
1150
-
1151
- PTW32_DLLPORT int PTW32_CDECL pthread_rwlockattr_setpshared (pthread_rwlockattr_t * attr,
1152
- int pshared);
1153
-
1154
- #if PTW32_LEVEL >= PTW32_LEVEL_MAX - 1
1155
-
1156
- /*
1157
- * Signal Functions. Should be defined in <signal.h> but MSVC and MinGW32
1158
- * already have signal.h that don't define these.
1159
- */
1160
- PTW32_DLLPORT int PTW32_CDECL pthread_kill(pthread_t thread, int sig);
1161
-
1162
- /*
1163
- * Non-portable functions
1164
- */
1165
-
1166
- /*
1167
- * Compatibility with Linux.
1168
- */
1169
- PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_setkind_np(pthread_mutexattr_t * attr,
1170
- int kind);
1171
- PTW32_DLLPORT int PTW32_CDECL pthread_mutexattr_getkind_np(pthread_mutexattr_t * attr,
1172
- int *kind);
1173
-
1174
- /*
1175
- * Possibly supported by other POSIX threads implementations
1176
- */
1177
- PTW32_DLLPORT int PTW32_CDECL pthread_delay_np (struct timespec * interval);
1178
- PTW32_DLLPORT int PTW32_CDECL pthread_num_processors_np(void);
1179
- PTW32_DLLPORT unsigned __int64 PTW32_CDECL pthread_getunique_np(pthread_t thread);
1180
-
1181
- /*
1182
- * Useful if an application wants to statically link
1183
- * the lib rather than load the DLL at run-time.
1184
- */
1185
- PTW32_DLLPORT int PTW32_CDECL pthread_win32_process_attach_np(void);
1186
- PTW32_DLLPORT int PTW32_CDECL pthread_win32_process_detach_np(void);
1187
- PTW32_DLLPORT int PTW32_CDECL pthread_win32_thread_attach_np(void);
1188
- PTW32_DLLPORT int PTW32_CDECL pthread_win32_thread_detach_np(void);
1189
-
1190
- /*
1191
- * Features that are auto-detected at load/run time.
1192
- */
1193
- PTW32_DLLPORT int PTW32_CDECL pthread_win32_test_features_np(int);
1194
- enum ptw32_features {
1195
- PTW32_SYSTEM_INTERLOCKED_COMPARE_EXCHANGE = 0x0001, /* System provides it. */
1196
- PTW32_ALERTABLE_ASYNC_CANCEL = 0x0002 /* Can cancel blocked threads. */
1197
- };
1198
-
1199
- /*
1200
- * Register a system time change with the library.
1201
- * Causes the library to perform various functions
1202
- * in response to the change. Should be called whenever
1203
- * the application's top level window receives a
1204
- * WM_TIMECHANGE message. It can be passed directly to
1205
- * pthread_create() as a new thread if desired.
1206
- */
1207
- PTW32_DLLPORT void * PTW32_CDECL pthread_timechange_handler_np(void *);
1208
-
1209
- #endif /*PTW32_LEVEL >= PTW32_LEVEL_MAX - 1 */
1210
-
1211
- #if PTW32_LEVEL >= PTW32_LEVEL_MAX
1212
-
1213
- /*
1214
- * Returns the Win32 HANDLE for the POSIX thread.
1215
- */
1216
- PTW32_DLLPORT HANDLE PTW32_CDECL pthread_getw32threadhandle_np(pthread_t thread);
1217
- /*
1218
- * Returns the win32 thread ID for POSIX thread.
1219
- */
1220
- PTW32_DLLPORT DWORD PTW32_CDECL pthread_getw32threadid_np (pthread_t thread);
1221
-
1222
-
1223
- /*
1224
- * Protected Methods
1225
- *
1226
- * This function blocks until the given WIN32 handle
1227
- * is signaled or pthread_cancel had been called.
1228
- * This function allows the caller to hook into the
1229
- * PThreads cancel mechanism. It is implemented using
1230
- *
1231
- * WaitForMultipleObjects
1232
- *
1233
- * on 'waitHandle' and a manually reset WIN32 Event
1234
- * used to implement pthread_cancel. The 'timeout'
1235
- * argument to TimedWait is simply passed to
1236
- * WaitForMultipleObjects.
1237
- */
1238
- PTW32_DLLPORT int PTW32_CDECL pthreadCancelableWait (HANDLE waitHandle);
1239
- PTW32_DLLPORT int PTW32_CDECL pthreadCancelableTimedWait (HANDLE waitHandle,
1240
- DWORD timeout);
1241
-
1242
- #endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
1243
-
1244
- /*
1245
- * Thread-Safe C Runtime Library Mappings.
1246
- */
1247
- #if !defined(_UWIN)
1248
- # if defined(NEED_ERRNO)
1249
- PTW32_DLLPORT int * PTW32_CDECL _errno( void );
1250
- # else
1251
- # if !defined(errno)
1252
- # if (defined(_MT) || defined(_DLL))
1253
- __declspec(dllimport) extern int * __cdecl _errno(void);
1254
- # define errno (*_errno())
1255
- # endif
1256
- # endif
1257
- # endif
1258
- #endif
1259
-
1260
- /*
1261
- * Some compiler environments don't define some things.
1262
- */
1263
- #if defined(__BORLANDC__)
1264
- # define _ftime ftime
1265
- # define _timeb timeb
1266
- #endif
1267
-
1268
- #if defined(__cplusplus)
1269
-
1270
- /*
1271
- * Internal exceptions
1272
- */
1273
- class ptw32_exception {};
1274
- class ptw32_exception_cancel : public ptw32_exception {};
1275
- class ptw32_exception_exit : public ptw32_exception {};
1276
-
1277
- #endif
1278
-
1279
- #if PTW32_LEVEL >= PTW32_LEVEL_MAX
1280
-
1281
- /* FIXME: This is only required if the library was built using SEH */
1282
- /*
1283
- * Get internal SEH tag
1284
- */
1285
- PTW32_DLLPORT DWORD PTW32_CDECL ptw32_get_exception_services_code(void);
1286
-
1287
- #endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
1288
-
1289
- #if !defined(PTW32_BUILD)
1290
-
1291
- #if defined(__CLEANUP_SEH)
1292
-
1293
- /*
1294
- * Redefine the SEH __except keyword to ensure that applications
1295
- * propagate our internal exceptions up to the library's internal handlers.
1296
- */
1297
- #define __except( E ) \
1298
- __except( ( GetExceptionCode() == ptw32_get_exception_services_code() ) \
1299
- ? EXCEPTION_CONTINUE_SEARCH : ( E ) )
1300
-
1301
- #endif /* __CLEANUP_SEH */
1302
-
1303
- #if defined(__CLEANUP_CXX)
1304
-
1305
- /*
1306
- * Redefine the C++ catch keyword to ensure that applications
1307
- * propagate our internal exceptions up to the library's internal handlers.
1308
- */
1309
- #if defined(_MSC_VER)
1310
- /*
1311
- * WARNING: Replace any 'catch( ... )' with 'PtW32CatchAll'
1312
- * if you want Pthread-Win32 cancelation and pthread_exit to work.
1313
- */
1314
-
1315
- #if !defined(PtW32NoCatchWarn)
1316
-
1317
- #pragma message("Specify \"/DPtW32NoCatchWarn\" compiler flag to skip this message.")
1318
- #pragma message("------------------------------------------------------------------")
1319
- #pragma message("When compiling applications with MSVC++ and C++ exception handling:")
1320
- #pragma message(" Replace any 'catch( ... )' in routines called from POSIX threads")
1321
- #pragma message(" with 'PtW32CatchAll' or 'CATCHALL' if you want POSIX thread")
1322
- #pragma message(" cancelation and pthread_exit to work. For example:")
1323
- #pragma message("")
1324
- #pragma message(" #if defined(PtW32CatchAll)")
1325
- #pragma message(" PtW32CatchAll")
1326
- #pragma message(" #else")
1327
- #pragma message(" catch(...)")
1328
- #pragma message(" #endif")
1329
- #pragma message(" {")
1330
- #pragma message(" /* Catchall block processing */")
1331
- #pragma message(" }")
1332
- #pragma message("------------------------------------------------------------------")
1333
-
1334
- #endif
1335
-
1336
- #define PtW32CatchAll \
1337
- catch( ptw32_exception & ) { throw; } \
1338
- catch( ... )
1339
-
1340
- #else /* _MSC_VER */
1341
-
1342
- #define catch( E ) \
1343
- catch( ptw32_exception & ) { throw; } \
1344
- catch( E )
1345
-
1346
- #endif /* _MSC_VER */
1347
-
1348
- #endif /* __CLEANUP_CXX */
1349
-
1350
- #endif /* ! PTW32_BUILD */
1351
-
1352
- #if defined(__cplusplus)
1353
- } /* End of extern "C" */
1354
- #endif /* __cplusplus */
1355
-
1356
- #if defined(PTW32__HANDLE_DEF)
1357
- # undef HANDLE
1358
- #endif
1359
- #if defined(PTW32__DWORD_DEF)
1360
- # undef DWORD
1361
- #endif
1362
-
1363
- #undef PTW32_LEVEL
1364
- #undef PTW32_LEVEL_MAX
1365
-
1366
- #endif /* ! RC_INVOKED */
1367
-
1368
- #endif /* PTHREAD_H */