Io_uring Linked Timeout с Repl_multishot return -einvalLinux

Ответить Пред. темаСлед. тема
Anonymous
 Io_uring Linked Timeout с Repl_multishot return -einval

Сообщение 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>
Также кольцевая переменная является глобальной переменной. Если вам интересно, где это определено.

Подробнее здесь: https://stackoverflow.com/questions/795 ... urn-einval
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»