async_xor(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ async_xor(9) ✨

okay so bestie, this is a page from the Kernel API Manual, section 9 β€” yes, the kernel section, we're literally in the big leagues πŸ’…


🌸 NAME 🌸

async_xor β€” the function that attempts to xor a whole set of blocks using a dma engine πŸŽ€


πŸ¦‹ SYNOPSIS πŸ¦‹

struct dma_async_tx_descriptor * async_xor (struct page *dest , struct
page **src_list , unsigned int offset , int src_cnt , size_t len ,
struct async_submit_ctl *submit );

like, the whole thing returns a struct dma_async_tx_descriptor *, no cap ✨


πŸ’– ARGUMENTS πŸ’–

  • dest β€” the destination page, the main character of this operation πŸ‘‘
  • src_list β€” an array of source pages (yes, array, plural, we have options here)
  • offset β€” the common src/dst offset where the transaction starts getting going 🏁
  • src_cnt β€” how many source pages you're feeding in, count them, bestie
  • len β€” length in bytes, fr fr
  • submit β€” the submission / completion modifiers, the little vibe settings πŸŽ›οΈ

πŸ”₯ DESCRIPTION πŸ”₯

the honored flags are, and I quote the energy: ASYNC_TX_ACK, ASYNC_TX_XOR_ZERO_DST, ASYNC_TX_XOR_DROP_DST β€” iconics only πŸ’«

so here's the tea: xor_gen always uses the dest as a source, which means you must set the ASYNC_TX_XOR_ZERO_DST flag if you do not want the dest data included in the calculation. periodt. the assumption with dma engines is that they only use the destination buffer as a source when it's explicitly specified in the source list πŸ‘€

src_list note: if the dest is also a source, it must be at index zero. no negotiating on that one 🫢 and heads up β€” the contents of this array will be overwritten if a scribble region is not specified 😭

🌈 SEE ALSO 🌈


and that's the whole page, bestie!! πŸ“ this little beauty lives in ./crypto/async_tx and it's dated October 2026 β€” so like, from the future, we love a timeless queen πŸ’œπŸ§šβœ¨

πŸ“¦ where this page comes from