virtqueue_a..._cache_clean(9)
π NAME π
virtqueue_add_inbuf_cache_clean β expose input buffers with cache clean
okay so bestie, welcome to the Kernel API Manual (section 9, the driver-functions girlypop zone β¨). This page is all about virtqueue_add_inbuf_cache_clean, and honestly? it's giving β¨niche but essentialβ¨.
πΈ SYNOPSIS πΈ
int virtqueue_add_inbuf_cache_clean (struct virtqueue *vq , struct
scatterlist *sg , unsigned int num , void *data , gfp_t gfp );
π¦ ARGUMENTS π¦
vqβ thestruct virtqueuewe're talking about π like, the actual queue, the main character.sgβ the scatterlist. And listen, it must be well-formed and terminated! no cap, this is not optional πnumβ the number of entries insgthat are writable by the other side.dataβ the token identifying the buffer. that's its little name tag πgfpβ how to do memory allocations (if necessary).
β¨ DESCRIPTION β¨
So it's the same as virtqueue_add_inbuf, except it passes DMA_ATTR_DEBUGGING_IGNORE_CACHELINES β which is a whole vibe. That flag says: the CPU will not dirty any cacheline overlapping this buffer while it's available π₯ (iconic of it), and it also suppresses overlapping cacheline warnings in DMA debug builds ππ.
β οΈ but fr fr, the caller must ensure we don't call this with other virtqueue operations at the same time (except where noted). lowkey important. don't be that girl π
Returns zero or a negative error (ie. ENOSPC, ENOMEM, EIO). periodt. π«Ά
π SEE ALSO π
Kernel file ./drivers/virtio/virtio_ring.c β plus the whole friend group, in order, no skips: virtqueue_add_sgs(9), virtqueue_add_outbuf(9), virtqueue_add_outbuf_premapped(9), virtqueue_add_inbuf(9), virtqueue_add_inbuf_ctx(9), virtqueue_add_inbuf_premapped(9), virtqueue_dma_dev(9), virtqueue_kick_prepare(9), virtqueue_notify(9), virtqueue_kick(9), virtqueue_get_buf_ctx(9), virtqueue_disable_cb(9), virtqueue_enable_cb_prepare(9), virtqueue_poll(9), virtqueue_enable_cb(9), virtqueue_enable_cb_delayed(9), virtqueue_detach_unused_buf(9), vring_interrupt(9), virtqueue_resize(9), virtqueue_reset(9), virtqueue_get_vring_size(9), virtqueue_map_alloc_coherent(9), virtqueue_map_free_coherent(9), virtqueue_map_page_attrs(9), virtqueue_unmap_page_attrs(9), virtqueue_map_single_attrs(9), virtqueue_unmap_single_attrs(9), virtqueue_map_mapping_error(9), virtqueue_map_need_sync(9), virtqueue_map_sync_single_range_for_cpu(9), virtqueue_map_sync_single_range_for_device(9) π
aaand that's the whole page, bestie ππ« this one came to you straight out of ./drivers/virtio, dated October 2026, by way of the Kernel API Manual β mwah, go read some more manpages, ily ππ
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms