program_rcvarray(9)
π program_rcvarray β like, the whole vibe
okay so bestie, welcome to the program_rcvarray(9) page from the Kernel API Manual πΈ this one's about programming an RcvArray group with receive buffers, and honestly? it's giving low-level realness. stay with me, it's not scary, i promise π«Ά
β¨ NAME β¨
program_rcvarray β program an RcvArray group with receive buffers π
π SYNOPSIS π
int program_rcvarray (struct hfi1_filedata *fd , struct tid_user_buf
*tbuf , struct tid_group *grp , u16 count , u32 *tidlist , unsigned int
*tididx , unsigned int *pmapped );
like yes, that's a lot of parameters, no cap, but each one has main character energy in its own way β scroll down for the whole breakdown π
π¦ ARGUMENTS π¦
fdβ filedata pointer. literally just the filedata pointer, that's her whole job πtbufβ pointer tostruct tid_user_bufthat has the user buffer starting virtual address, buffer length, page pointers, pagesets (array ofstruct tid_pagesetholding information on physically contiguous chunks from the user buffer), and other fields. okay so she's the whole package β start vaddr, length, page pointers, pagesets, plus other fields. an icon carrying a lot of luggage π§³grpβ RcvArray group. the group in question, periodt β¨countβ number ofstruct tid_pageset's to program. yes, that many. πtidlistβ the array ofu32elements when the information about the programmed RcvArray entries is to be encoded. it's where the encoded info about the programmed RcvArray entries goes when that's the plan πtididxβ starting offset intotidlist. where intidlistwe start, bestie πpmappedβ (output parameter) number of pages programmed into the RcvArray entries. output parameter!! so she writes back to you, she's not just taking ππ
π DESCRIPTION π
okay so this function will program up to count number of RcvArray entries from the group grp β¨
and here's the cute part β to make best use of write-combining writes, the function will perform writes to the unused RcvArray entries, which will be ignored by the HW π§ so yes, it's writing to places that don't care, and that's on purpose, and that's iconic.
each RcvArray entry will be programmed with a physically contiguous buffer chunk from the user's virtual buffer π so every entry gets a chunk that's physically contiguous, pulled out of the user's virtual buffer. slay.
π₯ RETURN π₯
-EINVALif the requested count is larger than the size of the group π (like, too much, bestie, the group can't hold all that)-ENOMEMor-EFAULTon error fromset_rcvarray_entryπ- or the number of RcvArray entries programmed β (that's the happy path, and it ate)
π SEE ALSO π
Kernel file ./drivers/infiniband/hw/hfi1/user_exp_rcv.c β like, go read the source, iykyk π¦
and that's the page!! π big thankies for reading, hope the vibe check passed πΈ
source/version: ./drivers/infiniband/hw/hfi1 Β· date: October 2026 β mwah, catch you in the next manpage bestie ππ
β¨
π¦ 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