/
githubmirror
/
liburing
Обзор
Документация
Войти
/
githubmirror
/
liburing
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/ooo-file-unreg.c
82 строки
2 KB
Khem Raj
ooo-file-unreg.c: Include poll.h instead of sys/poll.h
17 сен 2024, 20:01
Не верифицирован
17 сен 2024, 20:01
40cd129
Код
Авторство
О чём код?
/* SPDX-License-Identifier: MIT */ /* * Description: Test that out-of-order file updates with inflight requests * work as expected. * */ #include <stdio.h> #include <fcntl.h> #include <sys/socket.h> #include <unistd.h> #include <stdlib.h> #include <poll.h> #include "liburing.h" #include "helpers.h" int main(int argc, char *argv[]) { struct io_uring_sqe *sqe; int res, fds[2], sockid; struct io_uring ring; if (argc > 1) return T_EXIT_SKIP; res = io_uring_queue_init(1, &ring, 0); if (res) { fprintf(stderr, "queue_init: %d\n", res); return T_EXIT_FAIL; } res = io_uring_register_files_sparse(&ring, 2); if (res) { if (res == -EINVAL) return T_EXIT_SKIP; fprintf(stderr, "sparse reg: %d\n", res); return T_EXIT_FAIL; } fds[0] = socket(AF_INET, SOCK_DGRAM, 0); if (fds[0] < 0) { perror("socket"); return T_EXIT_FAIL; } fds[1] = socket(AF_INET, SOCK_DGRAM, 0); if (fds[1] < 0) { perror("socket"); return T_EXIT_FAIL; } res = io_uring_register_files_update(&ring, 0, fds, 2); if (res != 2) { fprintf(stderr, "files updates; %d\n", res); return T_EXIT_FAIL; } sqe = io_uring_get_sqe(&ring); io_uring_prep_poll_add(sqe, 0, POLLIN); sqe->flags = IOSQE_FIXED_FILE; io_uring_submit(&ring); close(fds[0]); close(fds[1]); sockid = -1; res = io_uring_register_files_update(&ring, 1, &sockid, 1); if (res != 1) { fprintf(stderr, "files updates; %d\n", res); return T_EXIT_FAIL; } sockid = -1; res = io_uring_register_files_update(&ring, 0, &sockid, 1); if (res != 1) { fprintf(stderr, "files updates; %d\n", res); return T_EXIT_FAIL; } sleep(1); io_uring_queue_exit(&ring); return T_EXIT_PASS; }