Можем ли мы использовать io_uring_register_buffers () с io_uring_prep_recv_multishot ()?Linux

Ответить
Anonymous
 Можем ли мы использовать io_uring_register_buffers () с io_uring_prep_recv_multishot ()?

Сообщение Anonymous »

Я пытаюсь понять, можно ли использовать U_RING для сети. До сих пор ничего не работает. Этот сервер использует заместительность. Чтобы зарегистрировать 10 буферов, каждый 4096 байт длиной. На самом деле это один смежный буфер, поэтому я предоставляю разные смещения во время регистрации.
После вызова прослушивания () в сокете я готовлю запрос принятия с io_uring_prep_accept (), и я успешно отправляю его. Как только клиент подключается, IO_URING_WAIT_CQE () возвращает CQE, в то время как я обрабатываю его, я также делаю IO_URING_PREP_RECV_MULTISHOT () и я его отправляю, успешно. Согласно документации, IO_URY_PREP_RECV_MULTISHOT () ожидает нуля для длины, которую я прошел. Кстати, перед отправкой многосекота я также делаю это: < /p>

Код: Выделить всё

sqe->flags    |= IOSQE_BUFFER_SELECT; sqe->buf_group = 0;  // Group ID 0

Второй CQE, который я получаю, - это Multishot One (прием был первым). Но этот CQE несет неудачу. RES составляет -105, что означает «отсутствие буферного пространства». В то же время подключенный клиент отправляет данные, но я не могу получить их, несмотря ни на что.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... -multishot
Ответить

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

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

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

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

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