@nxtedition/rocksdb 5.2.36 → 5.2.39

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 (190) hide show
  1. package/binding.cc +66 -91
  2. package/deps/liburing/liburing/COPYING +502 -0
  3. package/deps/liburing/liburing/COPYING.GPL +339 -0
  4. package/deps/liburing/liburing/LICENSE +7 -0
  5. package/deps/liburing/liburing/Makefile +84 -0
  6. package/deps/liburing/liburing/Makefile.quiet +11 -0
  7. package/deps/liburing/liburing/README +46 -0
  8. package/deps/liburing/liburing/configure +420 -0
  9. package/deps/liburing/liburing/debian/README.Debian +7 -0
  10. package/deps/liburing/liburing/debian/changelog +27 -0
  11. package/deps/liburing/liburing/debian/compat +1 -0
  12. package/deps/liburing/liburing/debian/control +48 -0
  13. package/deps/liburing/liburing/debian/copyright +49 -0
  14. package/deps/liburing/liburing/debian/liburing-dev.install +4 -0
  15. package/deps/liburing/liburing/debian/liburing-dev.manpages +6 -0
  16. package/deps/liburing/liburing/debian/liburing1-udeb.install +1 -0
  17. package/deps/liburing/liburing/debian/liburing1.install +1 -0
  18. package/deps/liburing/liburing/debian/liburing1.symbols +32 -0
  19. package/deps/liburing/liburing/debian/patches/series +1 -0
  20. package/deps/liburing/liburing/debian/rules +81 -0
  21. package/deps/liburing/liburing/debian/source/format +1 -0
  22. package/deps/liburing/liburing/debian/source/local-options +2 -0
  23. package/deps/liburing/liburing/debian/source/options +1 -0
  24. package/deps/liburing/liburing/debian/watch +3 -0
  25. package/deps/liburing/liburing/examples/Makefile +29 -0
  26. package/deps/liburing/liburing/examples/io_uring-cp.c +279 -0
  27. package/deps/liburing/liburing/examples/io_uring-test.c +112 -0
  28. package/deps/liburing/liburing/examples/link-cp.c +193 -0
  29. package/deps/liburing/liburing/examples/ucontext-cp.c +273 -0
  30. package/deps/liburing/liburing/liburing.pc.in +12 -0
  31. package/deps/liburing/liburing/liburing.spec +66 -0
  32. package/deps/liburing/liburing/make-debs.sh +53 -0
  33. package/deps/liburing/liburing/man/io_uring.7 +736 -0
  34. package/deps/liburing/liburing/man/io_uring_enter.2 +1403 -0
  35. package/deps/liburing/liburing/man/io_uring_get_sqe.3 +37 -0
  36. package/deps/liburing/liburing/man/io_uring_queue_exit.3 +27 -0
  37. package/deps/liburing/liburing/man/io_uring_queue_init.3 +44 -0
  38. package/deps/liburing/liburing/man/io_uring_register.2 +605 -0
  39. package/deps/liburing/liburing/man/io_uring_setup.2 +515 -0
  40. package/deps/liburing/liburing/src/Makefile +76 -0
  41. package/deps/liburing/liburing/src/include/liburing/barrier.h +73 -0
  42. package/deps/liburing/liburing/src/include/liburing/io_uring.h +422 -0
  43. package/deps/liburing/liburing/src/include/liburing.h +775 -0
  44. package/deps/liburing/liburing/src/liburing.map +46 -0
  45. package/deps/liburing/liburing/src/queue.c +403 -0
  46. package/deps/liburing/liburing/src/register.c +299 -0
  47. package/deps/liburing/liburing/src/setup.c +356 -0
  48. package/deps/liburing/liburing/src/syscall.c +73 -0
  49. package/deps/liburing/liburing/src/syscall.h +20 -0
  50. package/deps/liburing/liburing/test/232c93d07b74-test.c +305 -0
  51. package/deps/liburing/liburing/test/35fa71a030ca-test.c +329 -0
  52. package/deps/liburing/liburing/test/500f9fbadef8-test.c +89 -0
  53. package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +93 -0
  54. package/deps/liburing/liburing/test/8a9973408177-test.c +106 -0
  55. package/deps/liburing/liburing/test/917257daa0fe-test.c +53 -0
  56. package/deps/liburing/liburing/test/Makefile +312 -0
  57. package/deps/liburing/liburing/test/a0908ae19763-test.c +58 -0
  58. package/deps/liburing/liburing/test/a4c0b3decb33-test.c +180 -0
  59. package/deps/liburing/liburing/test/accept-link.c +251 -0
  60. package/deps/liburing/liburing/test/accept-reuse.c +164 -0
  61. package/deps/liburing/liburing/test/accept-test.c +79 -0
  62. package/deps/liburing/liburing/test/accept.c +476 -0
  63. package/deps/liburing/liburing/test/across-fork.c +283 -0
  64. package/deps/liburing/liburing/test/b19062a56726-test.c +53 -0
  65. package/deps/liburing/liburing/test/b5837bd5311d-test.c +77 -0
  66. package/deps/liburing/liburing/test/ce593a6c480a-test.c +135 -0
  67. package/deps/liburing/liburing/test/close-opath.c +122 -0
  68. package/deps/liburing/liburing/test/config +10 -0
  69. package/deps/liburing/liburing/test/connect.c +398 -0
  70. package/deps/liburing/liburing/test/cq-full.c +96 -0
  71. package/deps/liburing/liburing/test/cq-overflow.c +294 -0
  72. package/deps/liburing/liburing/test/cq-peek-batch.c +102 -0
  73. package/deps/liburing/liburing/test/cq-ready.c +94 -0
  74. package/deps/liburing/liburing/test/cq-size.c +58 -0
  75. package/deps/liburing/liburing/test/d4ae271dfaae-test.c +96 -0
  76. package/deps/liburing/liburing/test/d77a67ed5f27-test.c +65 -0
  77. package/deps/liburing/liburing/test/defer.c +307 -0
  78. package/deps/liburing/liburing/test/double-poll-crash.c +186 -0
  79. package/deps/liburing/liburing/test/eeed8b54e0df-test.c +114 -0
  80. package/deps/liburing/liburing/test/empty-eownerdead.c +42 -0
  81. package/deps/liburing/liburing/test/eventfd-disable.c +151 -0
  82. package/deps/liburing/liburing/test/eventfd-ring.c +97 -0
  83. package/deps/liburing/liburing/test/eventfd.c +112 -0
  84. package/deps/liburing/liburing/test/fadvise.c +202 -0
  85. package/deps/liburing/liburing/test/fallocate.c +249 -0
  86. package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +138 -0
  87. package/deps/liburing/liburing/test/file-register.c +843 -0
  88. package/deps/liburing/liburing/test/file-update.c +173 -0
  89. package/deps/liburing/liburing/test/files-exit-hang-poll.c +128 -0
  90. package/deps/liburing/liburing/test/files-exit-hang-timeout.c +134 -0
  91. package/deps/liburing/liburing/test/fixed-link.c +90 -0
  92. package/deps/liburing/liburing/test/fsync.c +224 -0
  93. package/deps/liburing/liburing/test/hardlink.c +136 -0
  94. package/deps/liburing/liburing/test/helpers.c +135 -0
  95. package/deps/liburing/liburing/test/helpers.h +67 -0
  96. package/deps/liburing/liburing/test/io-cancel.c +537 -0
  97. package/deps/liburing/liburing/test/io_uring_enter.c +296 -0
  98. package/deps/liburing/liburing/test/io_uring_register.c +664 -0
  99. package/deps/liburing/liburing/test/io_uring_setup.c +192 -0
  100. package/deps/liburing/liburing/test/iopoll.c +366 -0
  101. package/deps/liburing/liburing/test/lfs-openat-write.c +117 -0
  102. package/deps/liburing/liburing/test/lfs-openat.c +273 -0
  103. package/deps/liburing/liburing/test/link-timeout.c +1107 -0
  104. package/deps/liburing/liburing/test/link.c +496 -0
  105. package/deps/liburing/liburing/test/link_drain.c +229 -0
  106. package/deps/liburing/liburing/test/madvise.c +195 -0
  107. package/deps/liburing/liburing/test/mkdir.c +108 -0
  108. package/deps/liburing/liburing/test/multicqes_drain.c +383 -0
  109. package/deps/liburing/liburing/test/nop-all-sizes.c +107 -0
  110. package/deps/liburing/liburing/test/nop.c +115 -0
  111. package/deps/liburing/liburing/test/open-close.c +146 -0
  112. package/deps/liburing/liburing/test/openat2.c +240 -0
  113. package/deps/liburing/liburing/test/personality.c +204 -0
  114. package/deps/liburing/liburing/test/pipe-eof.c +81 -0
  115. package/deps/liburing/liburing/test/pipe-reuse.c +105 -0
  116. package/deps/liburing/liburing/test/poll-cancel-ton.c +139 -0
  117. package/deps/liburing/liburing/test/poll-cancel.c +135 -0
  118. package/deps/liburing/liburing/test/poll-link.c +227 -0
  119. package/deps/liburing/liburing/test/poll-many.c +208 -0
  120. package/deps/liburing/liburing/test/poll-mshot-update.c +273 -0
  121. package/deps/liburing/liburing/test/poll-ring.c +48 -0
  122. package/deps/liburing/liburing/test/poll-v-poll.c +353 -0
  123. package/deps/liburing/liburing/test/poll.c +109 -0
  124. package/deps/liburing/liburing/test/probe.c +137 -0
  125. package/deps/liburing/liburing/test/read-write.c +876 -0
  126. package/deps/liburing/liburing/test/register-restrictions.c +633 -0
  127. package/deps/liburing/liburing/test/rename.c +134 -0
  128. package/deps/liburing/liburing/test/ring-leak.c +173 -0
  129. package/deps/liburing/liburing/test/ring-leak2.c +249 -0
  130. package/deps/liburing/liburing/test/rsrc_tags.c +449 -0
  131. package/deps/liburing/liburing/test/runtests-loop.sh +16 -0
  132. package/deps/liburing/liburing/test/runtests.sh +170 -0
  133. package/deps/liburing/liburing/test/rw_merge_test.c +97 -0
  134. package/deps/liburing/liburing/test/self.c +91 -0
  135. package/deps/liburing/liburing/test/send_recv.c +291 -0
  136. package/deps/liburing/liburing/test/send_recvmsg.c +345 -0
  137. package/deps/liburing/liburing/test/sendmsg_fs_cve.c +198 -0
  138. package/deps/liburing/liburing/test/shared-wq.c +84 -0
  139. package/deps/liburing/liburing/test/short-read.c +75 -0
  140. package/deps/liburing/liburing/test/shutdown.c +163 -0
  141. package/deps/liburing/liburing/test/sigfd-deadlock.c +74 -0
  142. package/deps/liburing/liburing/test/socket-rw-eagain.c +156 -0
  143. package/deps/liburing/liburing/test/socket-rw.c +147 -0
  144. package/deps/liburing/liburing/test/splice.c +511 -0
  145. package/deps/liburing/liburing/test/sq-full-cpp.cc +45 -0
  146. package/deps/liburing/liburing/test/sq-full.c +45 -0
  147. package/deps/liburing/liburing/test/sq-poll-dup.c +200 -0
  148. package/deps/liburing/liburing/test/sq-poll-kthread.c +168 -0
  149. package/deps/liburing/liburing/test/sq-poll-share.c +137 -0
  150. package/deps/liburing/liburing/test/sq-space_left.c +159 -0
  151. package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +159 -0
  152. package/deps/liburing/liburing/test/sqpoll-disable-exit.c +195 -0
  153. package/deps/liburing/liburing/test/sqpoll-exit-hang.c +77 -0
  154. package/deps/liburing/liburing/test/sqpoll-sleep.c +68 -0
  155. package/deps/liburing/liburing/test/statx.c +172 -0
  156. package/deps/liburing/liburing/test/stdout.c +232 -0
  157. package/deps/liburing/liburing/test/submit-link-fail.c +154 -0
  158. package/deps/liburing/liburing/test/submit-reuse.c +239 -0
  159. package/deps/liburing/liburing/test/symlink.c +116 -0
  160. package/deps/liburing/liburing/test/teardowns.c +58 -0
  161. package/deps/liburing/liburing/test/thread-exit.c +131 -0
  162. package/deps/liburing/liburing/test/timeout-new.c +246 -0
  163. package/deps/liburing/liburing/test/timeout-overflow.c +204 -0
  164. package/deps/liburing/liburing/test/timeout.c +1354 -0
  165. package/deps/liburing/liburing/test/unlink.c +111 -0
  166. package/deps/liburing/liburing/test/wakeup-hang.c +162 -0
  167. package/deps/liburing/liburing.gyp +20 -0
  168. package/deps/rocksdb/rocksdb/db/corruption_test.cc +62 -0
  169. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +7 -62
  170. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +25 -11
  171. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +74 -155
  172. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -2
  173. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
  174. package/deps/rocksdb/rocksdb/env/fs_posix.cc +13 -0
  175. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +4 -2
  176. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +22 -4
  177. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +5 -0
  178. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +15 -0
  179. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +5 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  181. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +3 -0
  182. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +3 -7
  183. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +2 -1
  184. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +44 -29
  185. package/deps/rocksdb/rocksdb.gyp +4 -3
  186. package/package.json +1 -1
  187. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  188. package/prebuilds/darwin-x64/node.napi.node +0 -0
  189. package/prebuilds/linux-x64/node.napi.node +0 -0
  190. package/prebuilds/prebuilds/linux-x64/node.napi.node +0 -0
@@ -0,0 +1,273 @@
1
+ /* SPDX-License-Identifier: MIT */
2
+ /*
3
+ * gcc -Wall -O2 -D_GNU_SOURCE -o ucontext-cp ucontext-cp.c -luring
4
+ */
5
+ #define _POSIX_C_SOURCE 199309L
6
+ #include <stdio.h>
7
+ #include <fcntl.h>
8
+ #include <string.h>
9
+ #include <stdlib.h>
10
+ #include <unistd.h>
11
+ #include <assert.h>
12
+ #include <errno.h>
13
+ #include <ucontext.h>
14
+ #include <signal.h>
15
+ #include <inttypes.h>
16
+ #include <sys/types.h>
17
+ #include <sys/ioctl.h>
18
+ #include <sys/timerfd.h>
19
+ #include <sys/poll.h>
20
+ #include "liburing.h"
21
+
22
+ #define QD 64
23
+ #define BS 1024
24
+
25
+ #ifndef SIGSTKSZ
26
+ #define SIGSTKSZ 8192
27
+ #endif
28
+
29
+ typedef struct {
30
+ struct io_uring *ring;
31
+ unsigned char *stack_buf;
32
+ ucontext_t ctx_main, ctx_fnew;
33
+ } async_context;
34
+
35
+ typedef struct {
36
+ async_context *pctx;
37
+ int *psuccess;
38
+ int *pfailure;
39
+ int infd;
40
+ int outfd;
41
+ } arguments_bundle;
42
+
43
+ #define DEFINE_AWAIT_OP(operation) \
44
+ static ssize_t await_##operation( \
45
+ async_context *pctx, \
46
+ int fd, \
47
+ const struct iovec *ioves, \
48
+ unsigned int nr_vecs, \
49
+ off_t offset) \
50
+ { \
51
+ struct io_uring_sqe *sqe = io_uring_get_sqe(pctx->ring); \
52
+ struct io_uring_cqe *cqe; \
53
+ \
54
+ if (!sqe) \
55
+ return -1; \
56
+ \
57
+ io_uring_prep_##operation(sqe, fd, ioves, nr_vecs, offset); \
58
+ io_uring_sqe_set_data(sqe, pctx); \
59
+ swapcontext(&pctx->ctx_fnew, &pctx->ctx_main); \
60
+ io_uring_peek_cqe(pctx->ring, &cqe); \
61
+ assert(cqe); \
62
+ io_uring_cqe_seen(pctx->ring, cqe); \
63
+ \
64
+ return cqe->res; \
65
+ }
66
+
67
+ DEFINE_AWAIT_OP(readv)
68
+ DEFINE_AWAIT_OP(writev)
69
+ #undef DEFINE_AWAIT_OP
70
+
71
+ int await_poll(async_context *pctx, int fd, short poll_mask) {
72
+ struct io_uring_sqe *sqe = io_uring_get_sqe(pctx->ring);
73
+ struct io_uring_cqe *cqe;
74
+ if (!sqe)
75
+ return -1;
76
+
77
+ io_uring_prep_poll_add(sqe, fd, poll_mask);
78
+ io_uring_sqe_set_data(sqe, pctx);
79
+ swapcontext(&pctx->ctx_fnew, &pctx->ctx_main);
80
+ io_uring_peek_cqe(pctx->ring, &cqe);
81
+ assert(cqe);
82
+ io_uring_cqe_seen(pctx->ring, cqe);
83
+
84
+ return cqe->res;
85
+ }
86
+
87
+ int await_delay(async_context *pctx, time_t seconds) {
88
+ struct io_uring_sqe *sqe = io_uring_get_sqe(pctx->ring);
89
+ struct io_uring_cqe *cqe;
90
+ struct __kernel_timespec ts = {
91
+ .tv_sec = seconds,
92
+ .tv_nsec = 0
93
+ };
94
+
95
+ if (!sqe)
96
+ return -1;
97
+
98
+ io_uring_prep_timeout(sqe, &ts, 0, 0);
99
+ io_uring_sqe_set_data(sqe, pctx);
100
+ swapcontext(&pctx->ctx_fnew, &pctx->ctx_main);
101
+ io_uring_peek_cqe(pctx->ring, &cqe);
102
+ assert(cqe);
103
+ io_uring_cqe_seen(pctx->ring, cqe);
104
+
105
+ return 0;
106
+ }
107
+
108
+ static int setup_context(async_context *pctx, struct io_uring *ring)
109
+ {
110
+ int ret;
111
+
112
+ pctx->ring = ring;
113
+ ret = getcontext(&pctx->ctx_fnew);
114
+ if (ret < 0) {
115
+ perror("getcontext");
116
+ return -1;
117
+ }
118
+ pctx->stack_buf = malloc(SIGSTKSZ);
119
+ if (!pctx->stack_buf) {
120
+ perror("malloc");
121
+ return -1;
122
+ }
123
+ pctx->ctx_fnew.uc_stack.ss_sp = pctx->stack_buf;
124
+ pctx->ctx_fnew.uc_stack.ss_size = SIGSTKSZ;
125
+ pctx->ctx_fnew.uc_link = &pctx->ctx_main;
126
+
127
+ return 0;
128
+ }
129
+
130
+ static int copy_file(async_context *pctx, int infd, int outfd, struct iovec* piov)
131
+ {
132
+ off_t offset = 0;
133
+
134
+ for (;;) {
135
+ ssize_t bytes_read;
136
+
137
+ printf("%d->%d: readv %ld bytes from %ld\n", infd, outfd, (long) piov->iov_len, (long) offset);
138
+ if ((bytes_read = await_readv(pctx, infd, piov, 1, offset)) < 0) {
139
+ perror("await_readv");
140
+ return 1;
141
+ }
142
+ if (bytes_read == 0)
143
+ return 0;
144
+
145
+ piov->iov_len = bytes_read;
146
+
147
+ printf("%d->%d: writev %ld bytes from %ld\n", infd, outfd, (long) piov->iov_len, (long) offset);
148
+ if (await_writev(pctx, outfd, piov, 1, offset) != bytes_read) {
149
+ perror("await_writev");
150
+ return 1;
151
+ }
152
+ if (bytes_read < BS)
153
+ return 0;
154
+ offset += bytes_read;
155
+
156
+ printf("%d->%d: wait %ds\n", infd, outfd, 1);
157
+ await_delay(pctx, 1);
158
+ }
159
+ }
160
+
161
+ static void copy_file_wrapper(arguments_bundle *pbundle)
162
+ {
163
+ struct iovec iov = {
164
+ .iov_base = malloc(BS),
165
+ .iov_len = BS,
166
+ };
167
+ async_context *pctx = pbundle->pctx;
168
+
169
+ int ret = copy_file(pctx, pbundle->infd, pbundle->outfd, &iov);
170
+
171
+ printf("%d->%d: done with ret code %d\n", pbundle->infd, pbundle->outfd, ret);
172
+
173
+ if (ret == 0) {
174
+ ++*pbundle->psuccess;
175
+ } else {
176
+ ++*pbundle->pfailure;
177
+ }
178
+
179
+ free(iov.iov_base);
180
+ close(pbundle->infd);
181
+ close(pbundle->outfd);
182
+ free(pbundle->pctx->stack_buf);
183
+ free(pbundle->pctx);
184
+ free(pbundle);
185
+
186
+ swapcontext(&pctx->ctx_fnew, &pctx->ctx_main);
187
+ }
188
+
189
+ int main(int argc, char *argv[])
190
+ {
191
+ struct io_uring ring;
192
+ int i, req_count, ret;
193
+ int success = 0, failure = 0;
194
+
195
+ if (argc < 3) {
196
+ fprintf(stderr, "%s: infile1 outfile1 [infile2 outfile2 [...]]\n", argv[0]);
197
+ return 1;
198
+ }
199
+
200
+ ret = io_uring_queue_init(QD, &ring, 0);
201
+ if (ret < 0) {
202
+ fprintf(stderr, "queue_init: %s\n", strerror(-ret));
203
+ return -1;
204
+ }
205
+
206
+ req_count = (argc - 1) / 2;
207
+ printf("copying %d files...\n", req_count);
208
+
209
+ for (i = 1; i < argc; i += 2) {
210
+ int infd, outfd;
211
+
212
+ async_context *pctx = malloc(sizeof(*pctx));
213
+
214
+ if (!pctx || setup_context(pctx, &ring))
215
+ return 1;
216
+
217
+ infd = open(argv[i], O_RDONLY);
218
+ if (infd < 0) {
219
+ perror("open infile");
220
+ return 1;
221
+ }
222
+ outfd = open(argv[i + 1], O_WRONLY | O_CREAT | O_TRUNC, 0644);
223
+ if (outfd < 0) {
224
+ perror("open outfile");
225
+ return 1;
226
+ }
227
+
228
+ arguments_bundle *pbundle = malloc(sizeof(*pbundle));
229
+ pbundle->pctx = pctx;
230
+ pbundle->psuccess = &success;
231
+ pbundle->pfailure = &failure;
232
+ pbundle->infd = infd;
233
+ pbundle->outfd = outfd;
234
+
235
+ makecontext(&pctx->ctx_fnew, (void (*)(void)) copy_file_wrapper, 1, pbundle);
236
+
237
+ if (swapcontext(&pctx->ctx_main, &pctx->ctx_fnew)) {
238
+ perror("swapcontext");
239
+ return 1;
240
+ }
241
+ }
242
+
243
+ /* event loop */
244
+ while (success + failure < req_count) {
245
+ struct io_uring_cqe *cqe;
246
+
247
+ /* usually be timed waiting */
248
+ ret = io_uring_submit_and_wait(&ring, 1);
249
+ if (ret < 0) {
250
+ fprintf(stderr, "submit_and_wait: %s\n", strerror(-ret));
251
+ return 1;
252
+ }
253
+
254
+ ret = io_uring_wait_cqe(&ring, &cqe);
255
+ if (ret < 0) {
256
+ fprintf(stderr, "wait_cqe: %s\n", strerror(-ret));
257
+ return 1;
258
+ }
259
+
260
+ async_context *pctx = io_uring_cqe_get_data(cqe);
261
+
262
+ if (swapcontext(&pctx->ctx_main, &pctx->ctx_fnew)) {
263
+ perror("swapcontext");
264
+ return 1;
265
+ }
266
+ }
267
+
268
+ io_uring_queue_exit(&ring);
269
+
270
+ printf("finished with %d success(es) and %d failure(s)\n", success, failure);
271
+
272
+ return failure > 0;
273
+ }
@@ -0,0 +1,12 @@
1
+ prefix=@prefix@
2
+ exec_prefix=${prefix}
3
+ libdir=@libdir@
4
+ includedir=@includedir@
5
+
6
+ Name: @NAME@
7
+ Version: @VERSION@
8
+ Description: io_uring library
9
+ URL: http://git.kernel.dk/cgit/liburing/
10
+
11
+ Libs: -L${libdir} -luring
12
+ Cflags: -I${includedir}
@@ -0,0 +1,66 @@
1
+ Name: liburing
2
+ Version: 2.0
3
+ Release: 1%{?dist}
4
+ Summary: Linux-native io_uring I/O access library
5
+ License: (GPLv2 with exceptions and LGPLv2+) or MIT
6
+ Source0: https://brick.kernel.dk/snaps/%{name}-%{version}.tar.gz
7
+ Source1: https://brick.kernel.dk/snaps/%{name}-%{version}.tar.gz.asc
8
+ URL: https://git.kernel.dk/cgit/liburing/
9
+ BuildRequires: gcc
10
+ BuildRequires: make
11
+
12
+ %description
13
+ Provides native async IO for the Linux kernel, in a fast and efficient
14
+ manner, for both buffered and O_DIRECT.
15
+
16
+ %package devel
17
+ Summary: Development files for Linux-native io_uring I/O access library
18
+ Requires: %{name}%{_isa} = %{version}-%{release}
19
+ Requires: pkgconfig
20
+
21
+ %description devel
22
+ This package provides header files to include and libraries to link with
23
+ for the Linux-native io_uring.
24
+
25
+ %prep
26
+ %autosetup
27
+
28
+ %build
29
+ %set_build_flags
30
+ ./configure --prefix=%{_prefix} --libdir=/%{_libdir} --libdevdir=/%{_libdir} --mandir=%{_mandir} --includedir=%{_includedir}
31
+
32
+ %make_build
33
+
34
+ %install
35
+ %make_install
36
+
37
+ %files
38
+ %attr(0755,root,root) %{_libdir}/liburing.so.*
39
+ %license COPYING
40
+
41
+ %files devel
42
+ %{_includedir}/liburing/
43
+ %{_includedir}/liburing.h
44
+ %{_libdir}/liburing.so
45
+ %exclude %{_libdir}/liburing.a
46
+ %{_libdir}/pkgconfig/*
47
+ %{_mandir}/man2/*
48
+ %{_mandir}/man3/*
49
+ %{_mandir}/man7/*
50
+
51
+ %changelog
52
+ * Thu Oct 31 2019 Jeff Moyer <jmoyer@redhat.com> - 0.2-1
53
+ - Add io_uring_cq_ready()
54
+ - Add io_uring_peek_batch_cqe()
55
+ - Add io_uring_prep_accept()
56
+ - Add io_uring_prep_{recv,send}msg()
57
+ - Add io_uring_prep_timeout_remove()
58
+ - Add io_uring_queue_init_params()
59
+ - Add io_uring_register_files_update()
60
+ - Add io_uring_sq_space_left()
61
+ - Add io_uring_wait_cqe_timeout()
62
+ - Add io_uring_wait_cqes()
63
+ - Add io_uring_wait_cqes_timeout()
64
+
65
+ * Tue Jan 8 2019 Jens Axboe <axboe@kernel.dk> - 0.1
66
+ - Initial version
@@ -0,0 +1,53 @@
1
+ #!/usr/bin/env bash
2
+ # Copyright (C) 2019 Liu Changcheng <changcheng.liu@aliyun.com>
3
+ # Author: Liu Changcheng <changcheng.liu@aliyun.com>
4
+ #
5
+ # This program is free software; you can redistribute it and/or
6
+ # modify it under the terms of the GNU General Public License
7
+ # as published by the Free Software Foundation; either version 2
8
+ # of the License, or (at your option) any later version.
9
+ #
10
+ # This program is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU General Public License
16
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ #
18
+ set -xe
19
+
20
+ # Create dir for build
21
+ base=${1:-/tmp/release}
22
+ codename=$(lsb_release -sc)
23
+ releasedir=$base/$(lsb_release -si)/liburing
24
+ rm -rf $releasedir
25
+ mkdir -p $releasedir
26
+
27
+ src_dir=$(readlink -e `basename $0`)
28
+ liburing_dir=$(dirname $src_dir)
29
+ basename=$(basename $liburing_dir)
30
+ dirname=$(dirname $liburing_dir)
31
+ version=$(git describe --match "lib*" | cut -d '-' -f 2)
32
+ outfile="liburing-$version"
33
+ orgfile=$(echo $outfile | tr '-' '_')
34
+
35
+ # Prepare source code
36
+ cp -arf ${dirname}/${basename} ${releasedir}/${outfile}
37
+ cd ${releasedir}/${outfile}
38
+ git clean -dxf
39
+
40
+ # Change changelog if it's needed
41
+ cur_ver=`head -l debian/changelog | sed -n -e 's/.* (\(.*\)) .*/\1/p'`
42
+ if [ "$cur_ver" != "$version-1" ]; then
43
+ dch -D $codename --force-distribution -b -v "$version-1" "new version"
44
+ fi
45
+
46
+ # Create tar archieve
47
+ cd ../
48
+ tar cvzf ${outfile}.tar.gz ${outfile}
49
+ ln -s ${outfile}.tar.gz ${orgfile}.orig.tar.gz
50
+
51
+ # Build debian package
52
+ cd -
53
+ debuild