4 ms·
No. Io_uring is a message passing system where you tell the kernel to do something and let you know when it's done. Syscall chaining refers to having the kerne
by emilfihlman 5y ago
No. Io_uring is a message passing system where you tell the kernel to do something and let you know when it's done.
Syscall chaining refers to having the kernel execute consecutive systemcalls without switching the context back to userspace.
An example of this might be closing a multitude of file descriptors or registering signals or writing the same data to multiple fds etc, which becomes prohibitely expensive if you need to do it multiple times quickly, and actually doing it even once is really expensive if your sets are large.
- quotemstr 5y ago> Syscall chaining refers to having the kernel execute consecutive systemcalls without switching the context back to userspace. io_uring already gives you that. You can submit multiple operations in a batch and link the operations together so that if one operation in a chain of linked operations fails, io_uring won't try to execute the rest.
- emilfihlman 5y agoWhich is not syscall chaining, but message chaining, of io.
- quotemstr 5y agoHuh? It is literally system call chaining. You can make many system calls via io_ioring.
- dsp 5y ago> having the kernel execute consecutive systemcalls without switching the context io_uring enables exactly this https://kernel.dk/io_uring.pdf https://kernel.dk/io_uring.pdf
- emilfihlman 5y agoOnly for io, which is not the same thing.
- dsp 5y agoDespite the name, there is nothing io-specific about the io_uring interface. Non-io syscalls can be added. Io syscalls just tend to benefit the most (due to call frequency).