Можем ли мы использовать 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

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