io_uring_buf_ring_advance(3)
β¨ io_uring_buf_ring_advance β¨
okay bestie, so this one lives in the liburing Manual and it's giving short but mighty π like it's literally three lines of actual behavior but the whole buffer ring economy depends on it, no cap.
π NAME π
io_uring_buf_ring_advance β advance index of provided buffer in buffer ring
like... you're moving the lil pointer forward so the kernel can finally see the snacks you put on the plate π
πΈ SYNOPSIS πΈ
#include <liburing.h>
void io_uring_buf_ring_advance(struct io_uring_buf_ring *br,
int count);
π¦ DESCRIPTION π¦
so the tea is: io_uring_buf_ring_advance(3) commits count previously added buffers to the shared buffer ring br.
committing = you're making them visible to the kernel, and that's the whole point, because once the kernel can see them they're consumable. π
and the part that matters most, bestie, is that this passes ownership of the buffer to the ring. so like. those buffers are not yours anymore. they're the ring's now. it's giving β¨ custody transfer β¨.
think of it like: io_uring_buf_ring_add is you loading the dishwasher π«§ and io_uring_buf_ring_advance is you pressing start and walking away. you don't get to keep reaching in there after that. π
β RETURN VALUE β
None
like. nothing. zero. void. it just does the thing and leaves, main character energy, no receipts. π
π SEE ALSO π
(these three are the friend group. you don't do advance without knowing add, and cq_advance is the cousin that does the same vibe on the completion side. iykyk π§)
lowkey important reminder:countis the number of buffers you're committing, andbris the shared ring you're committing them to. don't mix those up, bestie, the vibes will be off and the kernel will simply not see your buffers π
and that's the whole page!! brought to you by liburing-2.2, dated May 18, 2022 π mwah, go commit those buffers, you're doing amazing sweetie πΈβ¨π¦π
π¦ 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 bookworm: liburing-dev 2.3-3
- 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 noble: liburing-dev 2.5-1build1
- 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