xilinx_dma_...x_descriptor(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– xilinx_dma_free_tx_descriptor β€” the Kernel API Manual, bestie edition πŸ’–

okay so before we even start: yes the page is literally called xilinx_dma_...x_descriptor(9) (the ellipsis is doing a lot of heavy lifting, don't @ me, that's just how the Kernel API Manual named it 🫢) and today we're deep-diving ONE function: xilinx_dma_free_tx_descriptor. it's not glamorous, it's not main character energy, but it's important and you're gonna understand it. let's go ✨


✨ NAME ✨

xilinx_dma_free_tx_descriptor β€” Free transaction descriptor πŸŽ€

like, that's it. that's the whole job. it frees the transaction descriptor. and honestly? iconic behaviour. releasing memory is self-care. πŸ’…


✨ SYNOPSIS ✨

void xilinx_dma_free_tx_descriptor (struct xilinx_dma_chan *chan ,
struct xilinx_dma_tx_descriptor *desc );

notice the return type: void. it returns nothing. no exit code, no status, no little message telling you "done bestie πŸ’–". it just does the thing and dips. and note the liddle space before each comma in the declaration β€” that's how the manual wrote it, so that's how we're keeping it, no cap. copy it exactly if you're copy-pasting, okurrr πŸ¦‹


✨ ARGUMENTS ✨

two args, both pointers, both absolutely carrying the function on their backs πŸ”₯

  • chan β€” Driver specific DMA channel. this is your channel, the one that belongs to the driver you're working in. it's the context, the home base, the main character of the whole DMA situation 🌸
  • desc β€” DMA transaction descriptor. the actual descriptor being freed. this is the thing getting yeeted back into the void (aka freed) 🧚
ok real talk: keep both of these straight in your head β€” one's the channel, one's the descriptor. they are not interchangeable and the manual is very clear about which is which. iykyk πŸ™ˆ

✨ SEE ALSO ✨

this is the part where the manpage absolutely ate and listed literally everything in the family. buckle up, we're going through the whole group chat πŸ‘‘

first up, the actual source file where all this lives:

  • Kernel file ./drivers/dma/xilinx/xilinx_dma.c

then the hardware descriptor structs:

  • struct xilinx_vdma_desc_hw(9)
  • struct xilinx_axidma_desc_hw(9)
  • struct xilinx_aximcdma_desc_hw(9)
  • struct xilinx_cdma_desc_hw(9)

then the tx segment structs:

  • struct xilinx_vdma_tx_segment(9)
  • struct xilinx_axidma_tx_segment(9)
  • struct xilinx_aximcdma_tx_segment(9)
  • struct xilinx_cdma_tx_segment(9)

then the big ones β€” descriptor, channel, ip type, device:

  • struct xilinx_dma_tx_descriptor(9)
  • struct xilinx_dma_chan(9)
  • enum xdma_ip_type(9)
  • struct xilinx_dma_device(9)

then the odds and ends and helpers:

then the allocators (the free function's chaotic siblings):

then the other free-ers, aka the rest of the cleanup crew:

and the descriptor lifecycle besties:

then the transfer-control girlies:

then resets and irq handling (the dramatic ones 😭):

then queue + submit:

then all the prep functions (where the actual work gets set up):

then terminate + config:

and finally the probe/remove/lifecycle squad, plus the DT xlate:

fr fr that's the entire list β€” nothing skipped, nothing merged, nothing invented. the manpage said "here's everyone in the family" and we showed up with the whole photo album πŸ“ΈπŸ’œ

🌸 and that's the page!! 🌸

cute little sign-off time: this whole thing lives under ./drivers/dma/xilinx and the manual is dated October 2026 β€” so like, mark your calendars bestie, that's the version stamp πŸŽ€βœ¨ now go free that descriptor responsibly, mwah πŸ’‹

πŸ“¦ where this page comes from