MCPcopy Create free account
hub / github.com/axboe/liburing / test_send_faults

Function test_send_faults

test/send-zerocopy.c:232–291  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

230}
231
232static int test_send_faults(int sock_tx, int sock_rx)
233{
234 struct io_uring_sqe *sqe;
235 int msg_flags = 0;
236 unsigned zc_flags = 0;
237 int ret, payload_size = 100;
238 struct io_uring ring;
239
240 ret = io_uring_queue_init(32, &ring, 0);
241 if (ret) {
242 fprintf(stderr, "queue init failed: %d\n", ret);
243 return -1;
244 }
245
246 /* invalid buffer */
247 sqe = io_uring_get_sqe(&ring);
248 io_uring_prep_send_zc(sqe, sock_tx, (void *)1UL, payload_size,
249 msg_flags, zc_flags);
250 sqe->user_data = 1;
251 ret = io_uring_submit(&ring);
252 assert(ret == 1);
253
254 ret = test_send_faults_check(&ring, -EFAULT);
255 if (ret) {
256 fprintf(stderr, "test_send_faults with invalid buf failed\n");
257 return -1;
258 }
259
260 /* invalid address */
261 sqe = io_uring_get_sqe(&ring);
262 io_uring_prep_send_zc(sqe, sock_tx, tx_buffer, payload_size,
263 msg_flags, zc_flags);
264 io_uring_prep_send_set_addr(sqe, (const struct sockaddr *)1UL,
265 sizeof(struct sockaddr_in6));
266 sqe->user_data = 1;
267 ret = io_uring_submit(&ring);
268 assert(ret == 1);
269
270 ret = test_send_faults_check(&ring, -EFAULT);
271 if (ret) {
272 fprintf(stderr, "test_send_faults with invalid addr failed\n");
273 return -1;
274 }
275
276 /* invalid send/recv flags */
277 sqe = io_uring_get_sqe(&ring);
278 io_uring_prep_send_zc(sqe, sock_tx, tx_buffer, payload_size,
279 msg_flags, ~0U);
280 sqe->user_data = 1;
281 ret = io_uring_submit(&ring);
282 assert(ret == 1);
283
284 ret = test_send_faults_check(&ring, -EINVAL);
285 if (ret) {
286 fprintf(stderr, "test_send_faults with invalid flags failed\n");
287 return -1;
288 }
289

Callers 1

run_basic_testsFunction · 0.85

Calls 4

io_uring_queue_initFunction · 0.85
io_uring_submitFunction · 0.85
test_send_faults_checkFunction · 0.85
io_uring_get_sqeFunction · 0.50

Tested by

no test coverage detected