uringmachine 0.1

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 (307) hide show
  1. checksums.yaml +7 -0
  2. data/.github/dependabot.yml +12 -0
  3. data/.github/workflows/test.yml +35 -0
  4. data/.gitignore +59 -0
  5. data/.gitmodules +3 -0
  6. data/CHANGELOG.md +7 -0
  7. data/Gemfile +3 -0
  8. data/LICENSE +21 -0
  9. data/README.md +11 -0
  10. data/Rakefile +39 -0
  11. data/TODO.md +0 -0
  12. data/examples/echo_server.rb +52 -0
  13. data/examples/event_loop.rb +69 -0
  14. data/examples/fibers.rb +105 -0
  15. data/examples/http_server.rb +56 -0
  16. data/examples/http_server_multishot.rb +57 -0
  17. data/examples/http_server_simpler.rb +34 -0
  18. data/ext/um/extconf.rb +71 -0
  19. data/ext/um/iou.h +101 -0
  20. data/ext/um/op_ctx.c +138 -0
  21. data/ext/um/ring.c +755 -0
  22. data/ext/um/um.c +267 -0
  23. data/ext/um/um.h +97 -0
  24. data/ext/um/um_class.c +175 -0
  25. data/ext/um/um_ext.c +11 -0
  26. data/ext/um/um_op.c +87 -0
  27. data/ext/um/um_utils.c +23 -0
  28. data/lib/uringmachine/version.rb +3 -0
  29. data/lib/uringmachine.rb +8 -0
  30. data/test/helper.rb +70 -0
  31. data/test/test_iou.rb +876 -0
  32. data/test/test_um.rb +168 -0
  33. data/uringmachine.gemspec +27 -0
  34. data/vendor/liburing/.github/actions/codespell/stopwords +7 -0
  35. data/vendor/liburing/.github/pull_request_template.md +86 -0
  36. data/vendor/liburing/.github/workflows/build.yml +137 -0
  37. data/vendor/liburing/.github/workflows/codespell.yml +25 -0
  38. data/vendor/liburing/.github/workflows/shellcheck.yml +20 -0
  39. data/vendor/liburing/.gitignore +41 -0
  40. data/vendor/liburing/CHANGELOG +111 -0
  41. data/vendor/liburing/CITATION.cff +11 -0
  42. data/vendor/liburing/COPYING +502 -0
  43. data/vendor/liburing/COPYING.GPL +339 -0
  44. data/vendor/liburing/LICENSE +20 -0
  45. data/vendor/liburing/Makefile +96 -0
  46. data/vendor/liburing/Makefile.common +7 -0
  47. data/vendor/liburing/Makefile.quiet +11 -0
  48. data/vendor/liburing/README +106 -0
  49. data/vendor/liburing/SECURITY.md +6 -0
  50. data/vendor/liburing/configure +624 -0
  51. data/vendor/liburing/debian/README.Debian +7 -0
  52. data/vendor/liburing/debian/changelog +38 -0
  53. data/vendor/liburing/debian/control +39 -0
  54. data/vendor/liburing/debian/copyright +49 -0
  55. data/vendor/liburing/debian/liburing-dev.install +4 -0
  56. data/vendor/liburing/debian/liburing-dev.manpages +5 -0
  57. data/vendor/liburing/debian/liburing2.install +1 -0
  58. data/vendor/liburing/debian/liburing2.symbols +56 -0
  59. data/vendor/liburing/debian/patches/series +1 -0
  60. data/vendor/liburing/debian/rules +29 -0
  61. data/vendor/liburing/debian/source/format +1 -0
  62. data/vendor/liburing/debian/source/local-options +2 -0
  63. data/vendor/liburing/debian/source/options +1 -0
  64. data/vendor/liburing/debian/watch +3 -0
  65. data/vendor/liburing/examples/Makefile +53 -0
  66. data/vendor/liburing/examples/helpers.c +62 -0
  67. data/vendor/liburing/examples/helpers.h +7 -0
  68. data/vendor/liburing/examples/io_uring-close-test.c +123 -0
  69. data/vendor/liburing/examples/io_uring-cp.c +282 -0
  70. data/vendor/liburing/examples/io_uring-test.c +112 -0
  71. data/vendor/liburing/examples/io_uring-udp.c +403 -0
  72. data/vendor/liburing/examples/link-cp.c +193 -0
  73. data/vendor/liburing/examples/napi-busy-poll-client.c +509 -0
  74. data/vendor/liburing/examples/napi-busy-poll-server.c +450 -0
  75. data/vendor/liburing/examples/poll-bench.c +101 -0
  76. data/vendor/liburing/examples/proxy.c +2461 -0
  77. data/vendor/liburing/examples/proxy.h +102 -0
  78. data/vendor/liburing/examples/rsrc-update-bench.c +100 -0
  79. data/vendor/liburing/examples/send-zerocopy.c +658 -0
  80. data/vendor/liburing/examples/ucontext-cp.c +258 -0
  81. data/vendor/liburing/liburing-ffi.pc.in +12 -0
  82. data/vendor/liburing/liburing.pc.in +12 -0
  83. data/vendor/liburing/liburing.spec +66 -0
  84. data/vendor/liburing/make-debs.sh +55 -0
  85. data/vendor/liburing/src/Makefile +129 -0
  86. data/vendor/liburing/src/arch/aarch64/lib.h +47 -0
  87. data/vendor/liburing/src/arch/aarch64/syscall.h +91 -0
  88. data/vendor/liburing/src/arch/generic/lib.h +17 -0
  89. data/vendor/liburing/src/arch/generic/syscall.h +100 -0
  90. data/vendor/liburing/src/arch/riscv64/lib.h +48 -0
  91. data/vendor/liburing/src/arch/riscv64/syscall.h +100 -0
  92. data/vendor/liburing/src/arch/syscall-defs.h +94 -0
  93. data/vendor/liburing/src/arch/x86/lib.h +11 -0
  94. data/vendor/liburing/src/arch/x86/syscall.h +296 -0
  95. data/vendor/liburing/src/ffi.c +15 -0
  96. data/vendor/liburing/src/include/liburing/barrier.h +81 -0
  97. data/vendor/liburing/src/include/liburing/io_uring.h +818 -0
  98. data/vendor/liburing/src/include/liburing.h +1602 -0
  99. data/vendor/liburing/src/int_flags.h +11 -0
  100. data/vendor/liburing/src/lib.h +52 -0
  101. data/vendor/liburing/src/liburing-ffi.map +211 -0
  102. data/vendor/liburing/src/liburing.map +104 -0
  103. data/vendor/liburing/src/nolibc.c +55 -0
  104. data/vendor/liburing/src/queue.c +468 -0
  105. data/vendor/liburing/src/register.c +374 -0
  106. data/vendor/liburing/src/setup.c +689 -0
  107. data/vendor/liburing/src/setup.h +9 -0
  108. data/vendor/liburing/src/syscall.c +29 -0
  109. data/vendor/liburing/src/syscall.h +53 -0
  110. data/vendor/liburing/src/version.c +21 -0
  111. data/vendor/liburing/test/232c93d07b74.c +305 -0
  112. data/vendor/liburing/test/35fa71a030ca.c +329 -0
  113. data/vendor/liburing/test/500f9fbadef8.c +91 -0
  114. data/vendor/liburing/test/7ad0e4b2f83c.c +94 -0
  115. data/vendor/liburing/test/8a9973408177.c +107 -0
  116. data/vendor/liburing/test/917257daa0fe.c +54 -0
  117. data/vendor/liburing/test/Makefile +297 -0
  118. data/vendor/liburing/test/a0908ae19763.c +59 -0
  119. data/vendor/liburing/test/a4c0b3decb33.c +181 -0
  120. data/vendor/liburing/test/accept-link.c +255 -0
  121. data/vendor/liburing/test/accept-non-empty.c +256 -0
  122. data/vendor/liburing/test/accept-reuse.c +163 -0
  123. data/vendor/liburing/test/accept-test.c +83 -0
  124. data/vendor/liburing/test/accept.c +919 -0
  125. data/vendor/liburing/test/across-fork.c +284 -0
  126. data/vendor/liburing/test/b19062a56726.c +54 -0
  127. data/vendor/liburing/test/b5837bd5311d.c +78 -0
  128. data/vendor/liburing/test/bind-listen.c +408 -0
  129. data/vendor/liburing/test/buf-ring-nommap.c +123 -0
  130. data/vendor/liburing/test/buf-ring-put.c +83 -0
  131. data/vendor/liburing/test/buf-ring.c +473 -0
  132. data/vendor/liburing/test/ce593a6c480a.c +139 -0
  133. data/vendor/liburing/test/close-opath.c +123 -0
  134. data/vendor/liburing/test/config +14 -0
  135. data/vendor/liburing/test/connect-rep.c +204 -0
  136. data/vendor/liburing/test/connect.c +442 -0
  137. data/vendor/liburing/test/coredump.c +60 -0
  138. data/vendor/liburing/test/cq-full.c +97 -0
  139. data/vendor/liburing/test/cq-overflow.c +530 -0
  140. data/vendor/liburing/test/cq-peek-batch.c +103 -0
  141. data/vendor/liburing/test/cq-ready.c +95 -0
  142. data/vendor/liburing/test/cq-size.c +65 -0
  143. data/vendor/liburing/test/d4ae271dfaae.c +96 -0
  144. data/vendor/liburing/test/d77a67ed5f27.c +65 -0
  145. data/vendor/liburing/test/defer-taskrun.c +391 -0
  146. data/vendor/liburing/test/defer-tw-timeout.c +173 -0
  147. data/vendor/liburing/test/defer.c +319 -0
  148. data/vendor/liburing/test/double-poll-crash.c +195 -0
  149. data/vendor/liburing/test/drop-submit.c +94 -0
  150. data/vendor/liburing/test/eeed8b54e0df.c +120 -0
  151. data/vendor/liburing/test/empty-eownerdead.c +45 -0
  152. data/vendor/liburing/test/eploop.c +74 -0
  153. data/vendor/liburing/test/eventfd-disable.c +179 -0
  154. data/vendor/liburing/test/eventfd-reg.c +77 -0
  155. data/vendor/liburing/test/eventfd-ring.c +98 -0
  156. data/vendor/liburing/test/eventfd.c +113 -0
  157. data/vendor/liburing/test/evloop.c +73 -0
  158. data/vendor/liburing/test/exec-target.c +6 -0
  159. data/vendor/liburing/test/exit-no-cleanup.c +117 -0
  160. data/vendor/liburing/test/fadvise.c +202 -0
  161. data/vendor/liburing/test/fallocate.c +265 -0
  162. data/vendor/liburing/test/fc2a85cb02ef.c +132 -0
  163. data/vendor/liburing/test/fd-install.c +500 -0
  164. data/vendor/liburing/test/fd-pass.c +237 -0
  165. data/vendor/liburing/test/fdinfo.c +419 -0
  166. data/vendor/liburing/test/file-register.c +1189 -0
  167. data/vendor/liburing/test/file-update.c +231 -0
  168. data/vendor/liburing/test/file-verify.c +654 -0
  169. data/vendor/liburing/test/files-exit-hang-poll.c +114 -0
  170. data/vendor/liburing/test/files-exit-hang-timeout.c +137 -0
  171. data/vendor/liburing/test/fixed-buf-iter.c +115 -0
  172. data/vendor/liburing/test/fixed-buf-merge.c +101 -0
  173. data/vendor/liburing/test/fixed-hugepage.c +411 -0
  174. data/vendor/liburing/test/fixed-link.c +90 -0
  175. data/vendor/liburing/test/fixed-reuse.c +160 -0
  176. data/vendor/liburing/test/fpos.c +255 -0
  177. data/vendor/liburing/test/fsnotify.c +118 -0
  178. data/vendor/liburing/test/fsync.c +224 -0
  179. data/vendor/liburing/test/futex.c +571 -0
  180. data/vendor/liburing/test/hardlink.c +170 -0
  181. data/vendor/liburing/test/helpers.c +318 -0
  182. data/vendor/liburing/test/helpers.h +108 -0
  183. data/vendor/liburing/test/ignore-single-mmap.c +48 -0
  184. data/vendor/liburing/test/init-mem.c +164 -0
  185. data/vendor/liburing/test/io-cancel.c +561 -0
  186. data/vendor/liburing/test/io_uring_enter.c +264 -0
  187. data/vendor/liburing/test/io_uring_passthrough.c +482 -0
  188. data/vendor/liburing/test/io_uring_register.c +503 -0
  189. data/vendor/liburing/test/io_uring_setup.c +110 -0
  190. data/vendor/liburing/test/iopoll-leak.c +85 -0
  191. data/vendor/liburing/test/iopoll-overflow.c +118 -0
  192. data/vendor/liburing/test/iopoll.c +465 -0
  193. data/vendor/liburing/test/lfs-openat-write.c +119 -0
  194. data/vendor/liburing/test/lfs-openat.c +273 -0
  195. data/vendor/liburing/test/link-timeout.c +1108 -0
  196. data/vendor/liburing/test/link.c +497 -0
  197. data/vendor/liburing/test/link_drain.c +255 -0
  198. data/vendor/liburing/test/madvise.c +195 -0
  199. data/vendor/liburing/test/min-timeout-wait.c +354 -0
  200. data/vendor/liburing/test/min-timeout.c +233 -0
  201. data/vendor/liburing/test/mkdir.c +112 -0
  202. data/vendor/liburing/test/msg-ring-fd.c +331 -0
  203. data/vendor/liburing/test/msg-ring-flags.c +212 -0
  204. data/vendor/liburing/test/msg-ring-overflow.c +159 -0
  205. data/vendor/liburing/test/msg-ring.c +467 -0
  206. data/vendor/liburing/test/multicqes_drain.c +429 -0
  207. data/vendor/liburing/test/napi-test.c +215 -0
  208. data/vendor/liburing/test/napi-test.sh +48 -0
  209. data/vendor/liburing/test/no-mmap-inval.c +42 -0
  210. data/vendor/liburing/test/nolibc.c +62 -0
  211. data/vendor/liburing/test/nop-all-sizes.c +99 -0
  212. data/vendor/liburing/test/nop.c +177 -0
  213. data/vendor/liburing/test/nvme.h +169 -0
  214. data/vendor/liburing/test/ooo-file-unreg.c +82 -0
  215. data/vendor/liburing/test/open-close.c +261 -0
  216. data/vendor/liburing/test/open-direct-link.c +188 -0
  217. data/vendor/liburing/test/open-direct-pick.c +180 -0
  218. data/vendor/liburing/test/openat2.c +312 -0
  219. data/vendor/liburing/test/personality.c +204 -0
  220. data/vendor/liburing/test/pipe-bug.c +95 -0
  221. data/vendor/liburing/test/pipe-eof.c +83 -0
  222. data/vendor/liburing/test/pipe-reuse.c +105 -0
  223. data/vendor/liburing/test/poll-cancel-all.c +496 -0
  224. data/vendor/liburing/test/poll-cancel-ton.c +135 -0
  225. data/vendor/liburing/test/poll-cancel.c +228 -0
  226. data/vendor/liburing/test/poll-link.c +221 -0
  227. data/vendor/liburing/test/poll-many.c +230 -0
  228. data/vendor/liburing/test/poll-mshot-overflow.c +265 -0
  229. data/vendor/liburing/test/poll-mshot-update.c +323 -0
  230. data/vendor/liburing/test/poll-race-mshot.c +276 -0
  231. data/vendor/liburing/test/poll-race.c +105 -0
  232. data/vendor/liburing/test/poll-ring.c +48 -0
  233. data/vendor/liburing/test/poll-v-poll.c +353 -0
  234. data/vendor/liburing/test/poll.c +327 -0
  235. data/vendor/liburing/test/probe.c +135 -0
  236. data/vendor/liburing/test/read-before-exit.c +129 -0
  237. data/vendor/liburing/test/read-mshot-empty.c +153 -0
  238. data/vendor/liburing/test/read-mshot.c +404 -0
  239. data/vendor/liburing/test/read-write.c +1013 -0
  240. data/vendor/liburing/test/recv-msgall-stream.c +398 -0
  241. data/vendor/liburing/test/recv-msgall.c +263 -0
  242. data/vendor/liburing/test/recv-multishot.c +602 -0
  243. data/vendor/liburing/test/recvsend_bundle.c +691 -0
  244. data/vendor/liburing/test/reg-fd-only.c +131 -0
  245. data/vendor/liburing/test/reg-hint.c +56 -0
  246. data/vendor/liburing/test/reg-reg-ring.c +90 -0
  247. data/vendor/liburing/test/regbuf-merge.c +91 -0
  248. data/vendor/liburing/test/register-restrictions.c +633 -0
  249. data/vendor/liburing/test/rename.c +132 -0
  250. data/vendor/liburing/test/ring-leak.c +283 -0
  251. data/vendor/liburing/test/ring-leak2.c +249 -0
  252. data/vendor/liburing/test/ringbuf-read.c +196 -0
  253. data/vendor/liburing/test/ringbuf-status.c +242 -0
  254. data/vendor/liburing/test/rsrc_tags.c +461 -0
  255. data/vendor/liburing/test/runtests-loop.sh +16 -0
  256. data/vendor/liburing/test/runtests-quiet.sh +11 -0
  257. data/vendor/liburing/test/runtests.sh +168 -0
  258. data/vendor/liburing/test/rw_merge_test.c +98 -0
  259. data/vendor/liburing/test/self.c +91 -0
  260. data/vendor/liburing/test/send-zerocopy.c +971 -0
  261. data/vendor/liburing/test/send_recv.c +412 -0
  262. data/vendor/liburing/test/send_recvmsg.c +444 -0
  263. data/vendor/liburing/test/shared-wq.c +84 -0
  264. data/vendor/liburing/test/short-read.c +75 -0
  265. data/vendor/liburing/test/shutdown.c +165 -0
  266. data/vendor/liburing/test/sigfd-deadlock.c +88 -0
  267. data/vendor/liburing/test/single-issuer.c +169 -0
  268. data/vendor/liburing/test/skip-cqe.c +428 -0
  269. data/vendor/liburing/test/socket-getsetsock-cmd.c +346 -0
  270. data/vendor/liburing/test/socket-io-cmd.c +237 -0
  271. data/vendor/liburing/test/socket-rw-eagain.c +149 -0
  272. data/vendor/liburing/test/socket-rw-offset.c +149 -0
  273. data/vendor/liburing/test/socket-rw.c +137 -0
  274. data/vendor/liburing/test/socket.c +408 -0
  275. data/vendor/liburing/test/splice.c +512 -0
  276. data/vendor/liburing/test/sq-full-cpp.cc +45 -0
  277. data/vendor/liburing/test/sq-full.c +45 -0
  278. data/vendor/liburing/test/sq-poll-dup.c +211 -0
  279. data/vendor/liburing/test/sq-poll-kthread.c +169 -0
  280. data/vendor/liburing/test/sq-poll-share.c +138 -0
  281. data/vendor/liburing/test/sq-space_left.c +159 -0
  282. data/vendor/liburing/test/sqpoll-disable-exit.c +196 -0
  283. data/vendor/liburing/test/sqpoll-exec.c +132 -0
  284. data/vendor/liburing/test/sqpoll-exit-hang.c +78 -0
  285. data/vendor/liburing/test/sqpoll-sleep.c +69 -0
  286. data/vendor/liburing/test/statx.c +172 -0
  287. data/vendor/liburing/test/stdout.c +232 -0
  288. data/vendor/liburing/test/submit-and-wait.c +108 -0
  289. data/vendor/liburing/test/submit-link-fail.c +156 -0
  290. data/vendor/liburing/test/submit-reuse.c +237 -0
  291. data/vendor/liburing/test/symlink.c +117 -0
  292. data/vendor/liburing/test/sync-cancel.c +235 -0
  293. data/vendor/liburing/test/teardowns.c +58 -0
  294. data/vendor/liburing/test/test.h +36 -0
  295. data/vendor/liburing/test/thread-exit.c +143 -0
  296. data/vendor/liburing/test/timeout-new.c +256 -0
  297. data/vendor/liburing/test/timeout.c +1798 -0
  298. data/vendor/liburing/test/truncate.c +186 -0
  299. data/vendor/liburing/test/tty-write-dpoll.c +60 -0
  300. data/vendor/liburing/test/unlink.c +112 -0
  301. data/vendor/liburing/test/version.c +25 -0
  302. data/vendor/liburing/test/wait-timeout.c +287 -0
  303. data/vendor/liburing/test/waitid.c +373 -0
  304. data/vendor/liburing/test/wakeup-hang.c +162 -0
  305. data/vendor/liburing/test/wq-aff.c +146 -0
  306. data/vendor/liburing/test/xattr.c +442 -0
  307. metadata +412 -0
@@ -0,0 +1,624 @@
1
+ #!/bin/sh
2
+
3
+ set -e
4
+
5
+ cc=${CC:-gcc}
6
+ cxx=${CXX:-g++}
7
+
8
+ for opt do
9
+ optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)' || true)
10
+ case "$opt" in
11
+ --help|-h) show_help=yes
12
+ ;;
13
+ --prefix=*) prefix="$(realpath -s $optarg)"
14
+ ;;
15
+ --includedir=*) includedir="$optarg"
16
+ ;;
17
+ --libdir=*) libdir="$optarg"
18
+ ;;
19
+ --libdevdir=*) libdevdir="$optarg"
20
+ ;;
21
+ --mandir=*) mandir="$optarg"
22
+ ;;
23
+ --datadir=*) datadir="$optarg"
24
+ ;;
25
+ --cc=*) cc="$optarg"
26
+ ;;
27
+ --cxx=*) cxx="$optarg"
28
+ ;;
29
+ --use-libc) use_libc=yes
30
+ ;;
31
+ *)
32
+ echo "ERROR: unknown option $opt"
33
+ echo "Try '$0 --help' for more information"
34
+ exit 1
35
+ ;;
36
+ esac
37
+ done
38
+
39
+ if test -z "$prefix"; then
40
+ prefix=/usr
41
+ fi
42
+ if test -z "$includedir"; then
43
+ includedir="$prefix/include"
44
+ fi
45
+ if test -z "$libdir"; then
46
+ libdir="$prefix/lib"
47
+ fi
48
+ if test -z "$libdevdir"; then
49
+ libdevdir="$prefix/lib"
50
+ fi
51
+ if test -z "$mandir"; then
52
+ mandir="$prefix/man"
53
+ fi
54
+ if test -z "$datadir"; then
55
+ datadir="$prefix/share"
56
+ fi
57
+
58
+ if test x"$libdir" = x"$libdevdir"; then
59
+ relativelibdir=""
60
+ else
61
+ relativelibdir="$libdir/"
62
+ fi
63
+
64
+ if test "$show_help" = "yes"; then
65
+ cat <<EOF
66
+
67
+ Usage: configure [options]
68
+ Options: [defaults in brackets after descriptions]
69
+ --help print this message
70
+ --prefix=PATH install in PATH [$prefix]
71
+ --includedir=PATH install headers in PATH [$includedir]
72
+ --libdir=PATH install runtime libraries in PATH [$libdir]
73
+ --libdevdir=PATH install development libraries in PATH [$libdevdir]
74
+ --mandir=PATH install man pages in PATH [$mandir]
75
+ --datadir=PATH install shared data in PATH [$datadir]
76
+ --cc=CMD use CMD as the C compiler
77
+ --cxx=CMD use CMD as the C++ compiler
78
+ --use-libc use libc for liburing (useful for hardening)
79
+ EOF
80
+ exit 0
81
+ fi
82
+
83
+ TMP_DIRECTORY="$(mktemp -d)"
84
+ TMPC="$TMP_DIRECTORY/liburing-conf.c"
85
+ TMPC2="$TMP_DIRECTORY/liburing-conf-2.c"
86
+ TMPCXX="$TMP_DIRECTORY/liburing-conf-2.cpp"
87
+ TMPO="$TMP_DIRECTORY/liburing-conf.o"
88
+ TMPE="$TMP_DIRECTORY/liburing-conf.exe"
89
+
90
+ touch $TMPC $TMPC2 $TMPCXX $TMPO $TMPE
91
+
92
+ # NB: do not call "exit" in the trap handler; this is buggy with some shells;
93
+ # see <1285349658-3122-1-git-send-email-loic.minier@linaro.org>
94
+ trap "rm -rf $TMP_DIRECTORY" EXIT INT QUIT TERM
95
+
96
+ rm -rf config.log
97
+
98
+ config_host_mak="config-host.mak"
99
+ config_host_h="config-host.h"
100
+
101
+ rm -rf $config_host_mak
102
+ rm -rf $config_host_h
103
+
104
+ fatal() {
105
+ echo $@
106
+ echo "Configure failed, check config.log and/or the above output"
107
+ rm -rf $config_host_mak
108
+ rm -rf $config_host_h
109
+ exit 1
110
+ }
111
+
112
+ # Print result for each configuration test
113
+ print_config() {
114
+ printf "%-30s%s\n" "$1" "$2"
115
+ }
116
+
117
+ # Default CFLAGS
118
+ CFLAGS="-D_GNU_SOURCE -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -include config-host.h"
119
+ BUILD_CFLAGS=""
120
+
121
+ # Print configure header at the top of $config_host_h
122
+ echo "/*" > $config_host_h
123
+ echo " * Automatically generated by configure - do not modify" >> $config_host_h
124
+ printf " * Configured with:" >> $config_host_h
125
+ printf " * '%s'" "$0" "$@" >> $config_host_h
126
+ echo "" >> $config_host_h
127
+ echo " */" >> $config_host_h
128
+
129
+ echo "# Automatically generated by configure - do not modify" > $config_host_mak
130
+ printf "# Configured with:" >> $config_host_mak
131
+ printf " '%s'" "$0" "$@" >> $config_host_mak
132
+ echo >> $config_host_mak
133
+
134
+ do_cxx() {
135
+ # Run the compiler, capturing its output to the log.
136
+ echo $cxx "$@" >> config.log
137
+ $cxx "$@" >> config.log 2>&1 || return $?
138
+ return 0
139
+ }
140
+
141
+ do_cc() {
142
+ # Run the compiler, capturing its output to the log.
143
+ echo $cc "$@" >> config.log
144
+ $cc "$@" >> config.log 2>&1 || return $?
145
+ # Test passed. If this is an --enable-werror build, rerun
146
+ # the test with -Werror and bail out if it fails. This
147
+ # makes warning-generating-errors in configure test code
148
+ # obvious to developers.
149
+ if test "$werror" != "yes"; then
150
+ return 0
151
+ fi
152
+ # Don't bother rerunning the compile if we were already using -Werror
153
+ case "$*" in
154
+ *-Werror*)
155
+ return 0
156
+ ;;
157
+ esac
158
+ echo $cc -Werror "$@" >> config.log
159
+ $cc -Werror "$@" >> config.log 2>&1 && return $?
160
+ echo "ERROR: configure test passed without -Werror but failed with -Werror."
161
+ echo "This is probably a bug in the configure script. The failing command"
162
+ echo "will be at the bottom of config.log."
163
+ fatal "You can run configure with --disable-werror to bypass this check."
164
+ }
165
+
166
+ compile_prog() {
167
+ local_cflags="$1"
168
+ local_ldflags="$2 $LIBS"
169
+ echo "Compiling test case $3" >> config.log
170
+ do_cc $CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
171
+ }
172
+
173
+ compile_prog_cxx() {
174
+ local_cflags="$1"
175
+ local_ldflags="$2 $LIBS"
176
+ echo "Compiling test case $3" >> config.log
177
+ do_cxx $CFLAGS $local_cflags -o $TMPE $TMPCXX $LDFLAGS $local_ldflags
178
+ }
179
+
180
+ has() {
181
+ type "$1" >/dev/null 2>&1
182
+ }
183
+
184
+ output_mak() {
185
+ echo "$1=$2" >> $config_host_mak
186
+ }
187
+
188
+ output_sym() {
189
+ output_mak "$1" "y"
190
+ echo "#define $1" >> $config_host_h
191
+ }
192
+
193
+ print_and_output_mak() {
194
+ print_config "$1" "$2"
195
+ output_mak "$1" "$2"
196
+ }
197
+ print_and_output_mak "prefix" "$prefix"
198
+ print_and_output_mak "includedir" "$includedir"
199
+ print_and_output_mak "libdir" "$libdir"
200
+ print_and_output_mak "libdevdir" "$libdevdir"
201
+ print_and_output_mak "relativelibdir" "$relativelibdir"
202
+ print_and_output_mak "mandir" "$mandir"
203
+ print_and_output_mak "datadir" "$datadir"
204
+
205
+ ####################################################
206
+ # Check for correct compiler runtime library to link with
207
+ libgcc_link_flag="-lgcc"
208
+ if $cc -print-libgcc-file-name >/dev/null 2>&1; then
209
+ libgcc_link_flag="$($cc $CFLAGS $LDFLAGS -print-libgcc-file-name)"
210
+ fi
211
+ print_and_output_mak "libgcc_link_flag" "$libgcc_link_flag"
212
+ ####################################################
213
+
214
+ ##########################################
215
+ # check for compiler -Wstringop-overflow
216
+ stringop_overflow="no"
217
+ cat > $TMPC << EOF
218
+ #include <linux/fs.h>
219
+ int main(int argc, char **argv)
220
+ {
221
+ return 0;
222
+ }
223
+ EOF
224
+ if compile_prog "-Werror -Wstringop-overflow=0" "" "stringop_overflow"; then
225
+ stringop_overflow="yes"
226
+ fi
227
+ print_config "stringop_overflow" "$stringop_overflow"
228
+
229
+ ##########################################
230
+ # check for compiler -Warryr-bounds
231
+ array_bounds="no"
232
+ cat > $TMPC << EOF
233
+ #include <linux/fs.h>
234
+ int main(int argc, char **argv)
235
+ {
236
+ return 0;
237
+ }
238
+ EOF
239
+ if compile_prog "-Werror -Warray-bounds=0" "" "array_bounds"; then
240
+ array_bounds="yes"
241
+ fi
242
+ print_config "array_bounds" "$array_bounds"
243
+
244
+
245
+ ##########################################
246
+ # check for __kernel_rwf_t
247
+ __kernel_rwf_t="no"
248
+ cat > $TMPC << EOF
249
+ #include <linux/fs.h>
250
+ int main(int argc, char **argv)
251
+ {
252
+ __kernel_rwf_t x;
253
+ x = 0;
254
+ return x;
255
+ }
256
+ EOF
257
+ if compile_prog "" "" "__kernel_rwf_t"; then
258
+ __kernel_rwf_t="yes"
259
+ fi
260
+ print_config "__kernel_rwf_t" "$__kernel_rwf_t"
261
+
262
+ ##########################################
263
+ # check for __kernel_timespec
264
+ __kernel_timespec="no"
265
+ cat > $TMPC << EOF
266
+ #include <linux/time.h>
267
+ #include <linux/time_types.h>
268
+ int main(int argc, char **argv)
269
+ {
270
+ struct __kernel_timespec ts;
271
+ ts.tv_sec = 0;
272
+ ts.tv_nsec = 1;
273
+ return 0;
274
+ }
275
+ EOF
276
+ if compile_prog "" "" "__kernel_timespec"; then
277
+ __kernel_timespec="yes"
278
+ fi
279
+ print_config "__kernel_timespec" "$__kernel_timespec"
280
+
281
+ ##########################################
282
+ # check for open_how
283
+ open_how="no"
284
+ cat > $TMPC << EOF
285
+ #include <sys/types.h>
286
+ #include <fcntl.h>
287
+ #include <string.h>
288
+ #include <linux/openat2.h>
289
+ int main(int argc, char **argv)
290
+ {
291
+ struct open_how how;
292
+ how.flags = 0;
293
+ how.mode = 0;
294
+ how.resolve = 0;
295
+ return 0;
296
+ }
297
+ EOF
298
+ if compile_prog "" "" "open_how"; then
299
+ open_how="yes"
300
+ fi
301
+ print_config "open_how" "$open_how"
302
+
303
+ ##########################################
304
+ # check for statx
305
+ statx="no"
306
+ cat > $TMPC << EOF
307
+ #include <sys/types.h>
308
+ #include <sys/stat.h>
309
+ #include <unistd.h>
310
+ #include <fcntl.h>
311
+ #include <string.h>
312
+ int main(int argc, char **argv)
313
+ {
314
+ struct statx x;
315
+
316
+ return memset(&x, 0, sizeof(x)) != NULL;
317
+ }
318
+ EOF
319
+ if compile_prog "" "" "statx"; then
320
+ statx="yes"
321
+ fi
322
+ print_config "statx" "$statx"
323
+
324
+ ##########################################
325
+ # check for glibc statx
326
+ glibc_statx="no"
327
+ cat > $TMPC << EOF
328
+ #include <sys/types.h>
329
+ #include <unistd.h>
330
+ #include <fcntl.h>
331
+ #include <string.h>
332
+ #include <sys/stat.h>
333
+ int main(int argc, char **argv)
334
+ {
335
+ struct statx x;
336
+
337
+ return memset(&x, 0, sizeof(x)) != NULL;
338
+ }
339
+ EOF
340
+ if compile_prog "" "" "glibc_statx"; then
341
+ glibc_statx="yes"
342
+ fi
343
+ print_config "glibc_statx" "$glibc_statx"
344
+
345
+ ##########################################
346
+ # check for C++
347
+ has_cxx="no"
348
+ cat > $TMPCXX << EOF
349
+ #include <iostream>
350
+ int main(int argc, char **argv)
351
+ {
352
+ std::cout << "Test";
353
+ return 0;
354
+ }
355
+ EOF
356
+ if compile_prog_cxx "" "" "C++"; then
357
+ has_cxx="yes"
358
+ fi
359
+ print_config "C++" "$has_cxx"
360
+
361
+ ##########################################
362
+ # check for ucontext support
363
+ has_ucontext="no"
364
+ cat > $TMPC << EOF
365
+ #include <ucontext.h>
366
+ int main(int argc, char **argv)
367
+ {
368
+ ucontext_t ctx;
369
+ getcontext(&ctx);
370
+ makecontext(&ctx, 0, 0);
371
+ return 0;
372
+ }
373
+ EOF
374
+ if compile_prog "" "" "has_ucontext"; then
375
+ has_ucontext="yes"
376
+ fi
377
+ print_config "has_ucontext" "$has_ucontext"
378
+
379
+ ##########################################
380
+ # Check NVME_URING_CMD support
381
+ nvme_uring_cmd="no"
382
+ cat > $TMPC << EOF
383
+ #include <linux/nvme_ioctl.h>
384
+ int main(void)
385
+ {
386
+ struct nvme_uring_cmd *cmd;
387
+
388
+ return sizeof(struct nvme_uring_cmd);
389
+ }
390
+ EOF
391
+ if compile_prog "" "" "nvme uring cmd"; then
392
+ nvme_uring_cmd="yes"
393
+ fi
394
+ print_config "NVMe uring command support" "$nvme_uring_cmd"
395
+
396
+ ##########################################
397
+ # Check futexv support
398
+ futexv="no"
399
+ cat > $TMPC << EOF
400
+ #include <linux/futex.h>
401
+ #include <unistd.h>
402
+ #include <string.h>
403
+ int main(void)
404
+ {
405
+ struct futex_waitv fw;
406
+
407
+ memset(&fw, FUTEX_32, sizeof(fw));
408
+
409
+ return sizeof(struct futex_waitv);
410
+ }
411
+ EOF
412
+ if compile_prog "" "" "futexv"; then
413
+ futexv="yes"
414
+ fi
415
+ print_config "futex waitv support" "$futexv"
416
+
417
+ ##########################################
418
+ # Check idtype_t support
419
+ has_idtype_t="no"
420
+ cat > $TMPC << EOF
421
+ #include <sys/wait.h>
422
+ int main(void)
423
+ {
424
+ idtype_t v;
425
+ return 0;
426
+ }
427
+ EOF
428
+ if compile_prog "" "" "idtype_t"; then
429
+ has_idtype_t="yes"
430
+ fi
431
+ print_config "has_idtype_t" "$has_idtype_t"
432
+
433
+ #############################################################################
434
+ liburing_nolibc="no"
435
+ if test "$use_libc" != "yes"; then
436
+
437
+ #
438
+ # Currently, CONFIG_NOLIBC only supports x86-64, x86 (32-bit), aarch64 and riscv64.
439
+ #
440
+ cat > $TMPC << EOF
441
+ int main(void){
442
+ #if defined(__x86_64__) || defined(__i386__) || defined(__aarch64__) || (defined(__riscv) && __riscv_xlen == 64)
443
+ return 0;
444
+ #else
445
+ #error libc is needed
446
+ #endif
447
+ }
448
+ EOF
449
+
450
+ if compile_prog "" "" "nolibc"; then
451
+ liburing_nolibc="yes"
452
+ fi
453
+ fi
454
+
455
+ print_config "nolibc" "$liburing_nolibc";
456
+ #############################################################################
457
+
458
+ ####################################################
459
+ # Most Android devices don't have sys/fanotify.h
460
+ has_fanotify="no"
461
+ cat > $TMPC << EOF
462
+ #include <sys/fanotify.h>
463
+ int main(void)
464
+ {
465
+ return 0;
466
+ }
467
+ EOF
468
+ if compile_prog "" "" "fanotify"; then
469
+ has_fanotify="yes"
470
+ fi
471
+ print_config "has_fanotify" "$has_fanotify"
472
+ ####################################################
473
+
474
+ if test "$liburing_nolibc" = "yes"; then
475
+ output_sym "CONFIG_NOLIBC"
476
+ fi
477
+ if test "$__kernel_rwf_t" = "yes"; then
478
+ output_sym "CONFIG_HAVE_KERNEL_RWF_T"
479
+ fi
480
+ if test "$__kernel_timespec" = "yes"; then
481
+ output_sym "CONFIG_HAVE_KERNEL_TIMESPEC"
482
+ fi
483
+ if test "$open_how" = "yes"; then
484
+ output_sym "CONFIG_HAVE_OPEN_HOW"
485
+ fi
486
+ if test "$statx" = "yes"; then
487
+ output_sym "CONFIG_HAVE_STATX"
488
+ fi
489
+ if test "$glibc_statx" = "yes"; then
490
+ output_sym "CONFIG_HAVE_GLIBC_STATX"
491
+ fi
492
+ if test "$has_cxx" = "yes"; then
493
+ output_sym "CONFIG_HAVE_CXX"
494
+ fi
495
+ if test "$has_ucontext" = "yes"; then
496
+ output_sym "CONFIG_HAVE_UCONTEXT"
497
+ fi
498
+ if test "$stringop_overflow" = "yes"; then
499
+ output_sym "CONFIG_HAVE_STRINGOP_OVERFLOW"
500
+ fi
501
+ if test "$array_bounds" = "yes"; then
502
+ output_sym "CONFIG_HAVE_ARRAY_BOUNDS"
503
+ fi
504
+ if test "$nvme_uring_cmd" = "yes"; then
505
+ output_sym "CONFIG_HAVE_NVME_URING"
506
+ fi
507
+ if test "$has_fanotify" = "yes"; then
508
+ output_sym "CONFIG_HAVE_FANOTIFY"
509
+ fi
510
+ if test "$futexv" = "yes"; then
511
+ output_sym "CONFIG_HAVE_FUTEXV"
512
+ fi
513
+
514
+ echo "CC=$cc" >> $config_host_mak
515
+ print_config "CC" "$cc"
516
+ echo "CXX=$cxx" >> $config_host_mak
517
+ print_config "CXX" "$cxx"
518
+
519
+ # generate io_uring_version.h
520
+ # Reset MAKEFLAGS
521
+ MAKEFLAGS=
522
+ MAKE_PRINT_VARS="include Makefile.common\nprint-%%: ; @echo \$(\$*)\n"
523
+ VERSION_MAJOR=$(printf "$MAKE_PRINT_VARS" | make -s --no-print-directory -f - print-VERSION_MAJOR)
524
+ VERSION_MINOR=$(printf "$MAKE_PRINT_VARS" | make -s --no-print-directory -f - print-VERSION_MINOR)
525
+ io_uring_version_h="src/include/liburing/io_uring_version.h"
526
+ cat > $io_uring_version_h << EOF
527
+ /* SPDX-License-Identifier: MIT */
528
+ #ifndef LIBURING_VERSION_H
529
+ #define LIBURING_VERSION_H
530
+
531
+ #define IO_URING_VERSION_MAJOR $VERSION_MAJOR
532
+ #define IO_URING_VERSION_MINOR $VERSION_MINOR
533
+
534
+ #endif
535
+ EOF
536
+
537
+ # generate compat.h
538
+ compat_h="src/include/liburing/compat.h"
539
+ cat > $compat_h << EOF
540
+ /* SPDX-License-Identifier: MIT */
541
+ #ifndef LIBURING_COMPAT_H
542
+ #define LIBURING_COMPAT_H
543
+
544
+ EOF
545
+
546
+ if test "$__kernel_rwf_t" != "yes"; then
547
+ cat >> $compat_h << EOF
548
+ typedef int __kernel_rwf_t;
549
+
550
+ EOF
551
+ fi
552
+ if test "$__kernel_timespec" != "yes"; then
553
+ cat >> $compat_h << EOF
554
+ #include <stdint.h>
555
+
556
+ struct __kernel_timespec {
557
+ int64_t tv_sec;
558
+ long long tv_nsec;
559
+ };
560
+
561
+ /* <linux/time_types.h> is not available, so it can't be included */
562
+ #define UAPI_LINUX_IO_URING_H_SKIP_LINUX_TIME_TYPES_H 1
563
+
564
+ EOF
565
+ else
566
+ cat >> $compat_h << EOF
567
+ #include <linux/time_types.h>
568
+ /* <linux/time_types.h> is included above and not needed again */
569
+ #define UAPI_LINUX_IO_URING_H_SKIP_LINUX_TIME_TYPES_H 1
570
+
571
+ EOF
572
+ fi
573
+ if test "$open_how" != "yes"; then
574
+ cat >> $compat_h << EOF
575
+ #include <inttypes.h>
576
+
577
+ struct open_how {
578
+ uint64_t flags;
579
+ uint64_t mode;
580
+ uint64_t resolve;
581
+ };
582
+
583
+ EOF
584
+ else cat >> $compat_h << EOF
585
+ #include <linux/openat2.h>
586
+
587
+ EOF
588
+ fi
589
+ if [ "$glibc_statx" = "no" ] && [ "$statx" = "yes" ]; then
590
+ cat >> $compat_h << EOF
591
+ #include <sys/stat.h>
592
+
593
+ EOF
594
+ fi
595
+ if test "$futexv" != "yes"; then
596
+ cat >> $compat_h << EOF
597
+ #include <inttypes.h>
598
+
599
+ #define FUTEX_32 2
600
+ #define FUTEX_WAITV_MAX 128
601
+
602
+ struct futex_waitv {
603
+ uint64_t val;
604
+ uint64_t uaddr;
605
+ uint32_t flags;
606
+ uint32_t __reserved;
607
+ };
608
+
609
+ EOF
610
+ fi
611
+
612
+ if test "$has_idtype_t" != "yes"; then
613
+ cat >> $compat_h << EOF
614
+ typedef enum
615
+ {
616
+ P_ALL, /* Wait for any child. */
617
+ P_PID, /* Wait for specified process. */
618
+ P_PGID /* Wait for members of process group. */
619
+ } idtype_t;
620
+ EOF
621
+ fi
622
+ cat >> $compat_h << EOF
623
+ #endif
624
+ EOF
@@ -0,0 +1,7 @@
1
+ liburing for Debian
2
+
3
+ The newest Linux IO interface i.e. io_uring, need
4
+ userspace library to support it. This package
5
+ liburing is the library for io_uring.
6
+
7
+ -- Liu Changcheng <changcheng.liu@aliyun.com> Thu, 14 Nov 2019 21:35:39 +0800
@@ -0,0 +1,38 @@
1
+ liburing (2.2-1) stable; urgency=low
2
+
3
+ * Update to 2.2
4
+ * Bump up so version to 2
5
+ * Drop liburing1-udeb
6
+ * Package using dh instead of using dh_* helpers manually
7
+ * Add linux header dependency to liburing-dev
8
+ * Bump up debhelper-compact level to 13
9
+
10
+ -- Kefu Chai <tchaikov@gmail.com> Sun, 16 Oct 2022 16:30:48 +0800
11
+
12
+ liburing (0.7-1) stable; urgency=low
13
+
14
+ * Update to 0.7
15
+ * Fix library symlinks
16
+
17
+ -- Stefan Metzmacher <metze@samba.org> Thu, 23 Jul 2020 00:23:00 +0200
18
+
19
+ liburing (0.4-2) stable; urgency=low
20
+
21
+ * Fix /usr/lib/*/liburing.so symlink to /lib/*/liburing.so.1.0.4
22
+
23
+ -- Stefan Metzmacher <metze@samba.org> Fri, 07 Feb 2020 15:30:00 +0100
24
+
25
+ liburing (0.4-1) stable; urgency=low
26
+
27
+ * Package liburing-0.4 using a packaging layout similar to libaio1
28
+
29
+ -- Stefan Metzmacher <metze@samba.org> Thu, 06 Feb 2020 11:30:00 +0100
30
+
31
+ liburing (0.2-1ubuntu1) stable; urgency=low
32
+
33
+ * Initial release.
34
+ * commit 4bce856d43ab1f9a64477aa5a8f9f02f53e64b74
35
+ * Author: Jens Axboe <axboe@kernel.dk>
36
+ * Date: Mon Nov 11 16:00:58 2019 -0700
37
+
38
+ -- Liu Changcheng <changcheng.liu@aliyun.com> Fri, 15 Nov 2019 00:06:46 +0800
@@ -0,0 +1,39 @@
1
+ Source: liburing
2
+ Section: libs
3
+ Priority: optional
4
+ Maintainer: Liu Changcheng <changcheng.liu@intel.com>
5
+ Build-Depends:
6
+ debhelper-compat (= 13)
7
+ Standards-Version: 4.1.4
8
+ Homepage: https://git.kernel.dk/cgit/liburing/tree/README
9
+ Vcs-Git: https://git.kernel.dk/liburing
10
+ Vcs-Browser: https://git.kernel.dk/cgit/liburing/
11
+
12
+ Package: liburing2
13
+ Architecture: linux-any
14
+ Multi-Arch: same
15
+ Pre-Depends: ${misc:Pre-Depends}
16
+ Depends: ${misc:Depends}, ${shlibs:Depends}
17
+ Description: userspace library for using io_uring
18
+ io_uring is kernel feature to improve development
19
+ The newese Linux IO interface, io_uring could improve
20
+ system performance a lot. liburing is the userspace
21
+ library to use io_uring feature.
22
+ .
23
+ This package contains the shared library.
24
+
25
+ Package: liburing-dev
26
+ Section: libdevel
27
+ Architecture: linux-any
28
+ Multi-Arch: same
29
+ Depends:
30
+ ${misc:Depends},
31
+ liburing2 (= ${binary:Version}),
32
+ linux-libc-dev (>= 5.1)
33
+ Description: userspace library for using io_uring
34
+ io_uring is kernel feature to improve development
35
+ The newese Linux IO interface, io_uring could improve
36
+ system performance a lot. liburing is the userspace
37
+ library to use io_uring feature.
38
+ .
39
+ This package contains the static library and the header files.