io_uring_prep_waitid(3)
π io_uring_prep_waitid β the liburing manual page, bestie edition π
okay so you're reading the liburing manual, section 3, and this little icon is called io_uring_prep_waitid(3). sit down, hydrate, let's go β¨
πΈ NAME πΈ
io_uring_prep_waitid β bestie, it prepares a waitid request. that's it. that's the whole job. π
π SYNOPSIS π
#include <sys/wait.h>
#include <liburing.h>
void io_uring_prep_waitid(struct io_uring_sqe *sqe,
idtype_t idtype,
id_t id,
siginfo_t *infop,
int options,
unsigned int flags);
copy it exactly like that, no cap. π«Ά
β¨ DESCRIPTION β¨
so. io_uring_prep_waitid(3) prepares a waitid request, and honestly? it ate.
your submission queue entry sqe gets set up so that the idtype and id arguments pick out which child(ren) we're talking about π, and options says which child state changes you're waiting on. the moment it comes back successful, it fills infop with info about the child process, if there even is one. and flags? that's the io_uring-specific modifier flags. they are currently unused, so likeβ¦ pass 0. that's it. don't be extra. π
this function prepares an async waitid(2) request. so if you want the actual details, go read that man page, iykyk. π
available since kernel 6.7 π β yes she's new here and yes she's thriving.
π« RETURN VALUE π«
none. literally nothing. void. the girl gives you nothing back and you respect it. π
π ERRORS π
the CQE res field is where the result of the operation lives. see the related man page for details on possible values, fr fr.
now here's the part that trips people up β and it's giving main character energy, so listen: where synchronous system calls will return -1 on failure and set errno to the actual error value, io_uring never uses errno. instead, it returns the negated errno directly in the CQE res field. periodt. no errno, don't look for it, she's not there. π
π¦ SEE ALSO π¦
that's the whole page, bestie, you're so smart for reading it π liburing-2.5, dated July 14, 2023 β mwah, go forth and await your children responsibly πΈβ¨π
π¦ where this page comes from
- alpine 3.22: liburing-doc 2.9-r0 Β· LGPL-2.1-or-later OR MIT
- alpine 3.23: liburing-doc 2.12-r0 Β· LGPL-2.1-or-later OR MIT
- alpine 3.24: liburing-doc 2.14-r0 Β· LGPL-2.1-or-later OR MIT
- arch rolling: liburing 2.15-1 Β· GPL-2.0-only WITH Linux-syscall-note OR MIT AND LGPL-2.0-or-later AND MIT
- centos-stream 10: liburing-devel 2.12-1.el10 Β· (GPLv2 with exceptions and LGPLv2+) or MIT
- centos-stream 9: liburing-devel 2.12-1.el9 Β· (GPLv2 with exceptions and LGPLv2+) or MIT
- centos-stream 9: liburing-devel 2.12-1.el9 Β· (GPLv2 with exceptions and LGPLv2+) or MIT
- debian trixie: liburing-dev 2.9-1
- fedora 43: liburing-devel 2.9-2.fc43 Β· (GPL-2.0-only WITH Linux-syscall-note OR MIT) AND (LGPL-2.0-or-later OR MIT)
- fedora 43: liburing-devel 2.9-2.fc43 Β· (GPL-2.0-only WITH Linux-syscall-note OR MIT) AND (LGPL-2.0-or-later OR MIT)
- fedora 44: liburing-devel 2.13-2.fc44 Β· (GPL-2.0-only WITH Linux-syscall-note OR MIT) AND (LGPL-2.0-or-later OR MIT)
- fedora 44: liburing-devel 2.13-2.fc44 Β· (GPL-2.0-only WITH Linux-syscall-note OR MIT) AND (LGPL-2.0-or-later OR MIT)
- nixpkgs unstable: liburing 2.14
- opensuse-leap 16.0: liburing-devel 2.8-160000.3.1 Β· (GPL-2.0-only AND LGPL-2.1-or-later) OR MIT
- opensuse-leap 16.0: liburing-devel 2.8-160000.3.1 Β· (GPL-2.0-only AND LGPL-2.1-or-later) OR MIT
- opensuse-leap 16.0: liburing-devel 2.8-160000.3.1 Β· (GPL-2.0-only AND LGPL-2.1-or-later) OR MIT
- opensuse-leap 16.0: liburing-devel 2.8-160000.3.1 Β· (GPL-2.0-only AND LGPL-2.1-or-later) OR MIT
- ubuntu questing: liburing-dev 2.11-1
- ubuntu resolute: liburing-dev 2.14-1
- ubuntu stonking: liburing-dev 2.15-1
- π the page's license: LGPL-2.0-or-later
- Copyright (C) 2022 Jens Axboe <axboe@kernel.dk>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms