creamy-advantage-22176
08/27/2025, 2:33 PMcreamy-advantage-22176
08/27/2025, 2:33 PMblue-flower-12209
08/27/2025, 2:35 PMblue-flower-12209
08/27/2025, 2:35 PMbetter-helmet-21984
08/27/2025, 2:44 PMbetter-helmet-21984
08/27/2025, 2:44 PMbetter-helmet-21984
08/27/2025, 2:45 PMbetter-helmet-21984
08/27/2025, 2:45 PMcreamy-advantage-22176
08/27/2025, 2:57 PMcreamy-advantage-22176
08/27/2025, 2:59 PMIO_URING_QUERY_OPCODES
enum with the additional io_uring_query_hdr
arguments over the versioned struct approach tbhambitious-wire-70260
08/27/2025, 3:09 PMsigmask_sz
in io_uring_getevents_arg
?better-helmet-21984
08/27/2025, 3:32 PMcreamy-advantage-22176
08/27/2025, 3:34 PMambitious-wire-70260
08/27/2025, 4:18 PMio_uring_enter
sigmask argument work. I have this SIGPIPE coming from a socket write that comes through io_uring_enter
. If I use pthread_sigmask
to mask it, the signal goes away. If I use the supposedly equivalent sigmask argument, it still comes through.better-helmet-21984
08/27/2025, 4:22 PMambitious-wire-70260
08/27/2025, 4:29 PMCPP
sigset_t sigset_1;
vsm_verify(pthread_sigmask(SIG_BLOCK, nullptr, &sigset_1) == 0);
debug_print_sigset("old", sigset_1);
vsm_verify(sigaddset(&sigset_1, SIGPIPE) == 0);
debug_print_sigset("new", sigset_1);
#if 0
// Use pthread_sigmask to block SIGPIPE temporarily:
sigset_t sigset_2;
vsm_verify(pthread_sigmask(SIG_BLOCK, &sigset_1, &sigset_2) == 0);
struct sigset_cancel
{
sigset_t* sigset;
~sigset_cancel()
{
vsm_verify(pthread_sigmask(SIG_SETMASK, sigset, nullptr) == 0);
}
};
sigset_cancel sigmask_cancel;
sigmask_cancel.sigset = &sigset_2;
#endif
fprintf(stderr, "enter-1\n");
int const r = io_uring_enter(
static_cast<unsigned>(io_uring_fd),
to_submit,
min_complete,
flags,
&sigset_1);
fprintf(stderr, "enter-2\n");
ambitious-wire-70260
08/27/2025, 4:30 PMsigset (old):
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
sigset (new):
00100000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
00000000000000000000000000000000
enter-1
vasama@desktop:~/c/allio/build/gcc-asan/Debug$ echo $?
141
ambitious-wire-70260
08/27/2025, 4:42 PMambitious-wire-70260
08/27/2025, 4:45 PMio_uring_enter
?blue-flower-12209
08/29/2025, 5:05 PMblue-flower-12209
08/29/2025, 5:06 PMblue-flower-12209
08/29/2025, 5:07 PMassert!(cqe.res != liburing_rs::IORING_NOTIF_USAGE_ZC_COPIED as _);
Tbf, I am using really small sends in my unit tests so my guess is that it's better to copy for small buffers and do real zc for large buffersblue-flower-12209
08/29/2025, 5:07 PMbetter-helmet-21984
08/30/2025, 3:51 PMblue-flower-12209
08/30/2025, 4:24 PMhallowed-insurance-55179
09/03/2025, 9:16 AMif_rxq
queue-id in io_uring_zcrx_ifq_reg
is different from the queue setup via flow-steering? In my test, the socket is still receiving the data.gorgeous-horse-28122
09/05/2025, 3:52 PMcreamy-advantage-22176
09/08/2025, 6:03 PMbetter-helmet-21984
09/08/2025, 6:13 PMcreamy-advantage-22176
09/08/2025, 6:20 PM