Я использую эту функцию, чтобы отправить opl_multishot sqe с связанным тайм -аутом для автоматической отмены < /p>
int upollm(conn_t *conn, uint bit_mask, uint64_t sec, uint64_t nsec) {
struct io_uring_sqe *sqe = io_uring_get_sqe(&ring);
if (!sqe) return -1;
conn->op = IORING_POLL_ADD_MULTI;
sqe->user_data = (__u64)conn;
sqe->flags |= IOSQE_IO_LINK;
io_uring_prep_poll_multishot(sqe, conn->fd, bit_mask);
sqe = io_uring_get_sqe(&ring);
if (!sqe) return -1;
struct __kernel_timespec ts = {.tv_sec = sec, .tv_nsec = nsec};
sqe->user_data = (__u64)conn;
io_uring_prep_link_timeout(sqe, &ts, 0);
int ret = io_uring_submit(&ring);
if (ret < 0) return -1;
return 0;
}
< /code>
SQE всегда представляются правильно без проблем, но по какой -то причине, когда он обрабатывается, CQE-> res установлен на -22, который составляет -einval. < /p>
Сначала я думал, что это потому, что Sec и NSEC передаются в TS, но даже когда я жестко кодировал значения как Sec = 5; и nsec = 0; CQE-> Res по -прежнему был -22. < /p>
Также кольцевая переменная является глобальной переменной. Если вам интересно, где это определено.
Подробнее здесь: https://stackoverflow.com/questions/795 ... urn-einval
Io_uring Linked Timeout с Repl_multishot return -einval ⇐ Linux
-
Anonymous
1745839547
Anonymous
Я использую эту функцию, чтобы отправить opl_multishot sqe с связанным тайм -аутом для автоматической отмены < /p>
int upollm(conn_t *conn, uint bit_mask, uint64_t sec, uint64_t nsec) {
struct io_uring_sqe *sqe = io_uring_get_sqe(&ring);
if (!sqe) return -1;
conn->op = IORING_POLL_ADD_MULTI;
sqe->user_data = (__u64)conn;
sqe->flags |= IOSQE_IO_LINK;
io_uring_prep_poll_multishot(sqe, conn->fd, bit_mask);
sqe = io_uring_get_sqe(&ring);
if (!sqe) return -1;
struct __kernel_timespec ts = {.tv_sec = sec, .tv_nsec = nsec};
sqe->user_data = (__u64)conn;
io_uring_prep_link_timeout(sqe, &ts, 0);
int ret = io_uring_submit(&ring);
if (ret < 0) return -1;
return 0;
}
< /code>
SQE всегда представляются правильно без проблем, но по какой -то причине, когда он обрабатывается, CQE-> res установлен на -22, который составляет -einval. < /p>
Сначала я думал, что это потому, что Sec и NSEC передаются в TS, но даже когда я жестко кодировал значения как Sec = 5; и nsec = 0; CQE-> Res по -прежнему был -22. < /p>
Также кольцевая переменная является глобальной переменной. Если вам интересно, где это определено.
Подробнее здесь: [url]https://stackoverflow.com/questions/79596356/io-uring-linked-timeout-with-poll-multishot-return-einval[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия