| 355 | } |
| 356 | |
| 357 | static int test_basic(struct io_uring *ring, int fail) |
| 358 | { |
| 359 | int *files; |
| 360 | int ret, i; |
| 361 | int nr_files = fail ? 10 : 100; |
| 362 | |
| 363 | files = open_files(nr_files, fail ? 90 : 0, 0); |
| 364 | if (fail) { |
| 365 | for (i = nr_files; i < nr_files + 90; i++) |
| 366 | files[i] = -2; |
| 367 | } |
| 368 | ret = io_uring_register_files(ring, files, 100); |
| 369 | if (ret) { |
| 370 | if (fail) { |
| 371 | if (ret == -EBADF || ret == -EFAULT) { |
| 372 | close_files(files, nr_files, 0); |
| 373 | return 0; |
| 374 | } |
| 375 | } |
| 376 | fprintf(stderr, "%s: register %d\n", __FUNCTION__, ret); |
| 377 | goto err; |
| 378 | } |
| 379 | if (fail) { |
| 380 | fprintf(stderr, "Registration succeeded, but expected fail\n"); |
| 381 | goto err; |
| 382 | } |
| 383 | ret = io_uring_unregister_files(ring); |
| 384 | if (ret) { |
| 385 | fprintf(stderr, "%s: unregister %d\n", __FUNCTION__, ret); |
| 386 | goto err; |
| 387 | } |
| 388 | close_files(files, nr_files, 0); |
| 389 | return 0; |
| 390 | err: |
| 391 | close_files(files, nr_files, 0); |
| 392 | return 1; |
| 393 | } |
| 394 | |
| 395 | /* |
| 396 | * Register 0 files, but reserve space for 10. Then add one file. |
no test coverage detected