ata_exec_internal(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– NAME πŸ’–

ata_exec_internal β€” execute libata internal command. (yes bestie, this is page ata_exec_internal(9) from the Kernel API Manual, and it's lowkey iconic πŸ’…)

✨ SYNOPSIS ✨

unsigned int ata_exec_internal (struct ata_device *dev , struct
       ata_taskfile *tf , const u8 *cdb , enum dma_data_direction dma_dir ,
       void *buf , unsigned int buflen , unsigned int timeout );

πŸŽ€ ARGUMENTS πŸŽ€

  • dev β€” the device to which the command is sent, periodt.
  • tf β€” taskfile registers for the command and the result; it comes in with the command and leaves with the result.
  • cdb β€” CDB for packet command, no cap.
  • dma_dir β€” data transfer direction of the command.
  • buf β€” data buffer of the command.
  • buflen β€” length of data buffer.
  • timeout β€” timeout in msecs (0 for default). iykyk.

πŸ¦‹ DESCRIPTION πŸ¦‹

Executes libata internal command with timeout. tf contains the command on entry and the result on return. Timeout and error conditions are reported via the return value. No recovery action is taken after a command times out. It is the caller's duty to clean up after timeout. So don't just ghost it after a timeout, bestie πŸ˜­πŸ’€

LOCKING: None. Should be called with kernel context, might sleep. Like, actually might sleep β€” respect the nap era 😴

πŸ”₯ RETURN πŸ”₯

Zero on success, AC_ERR_* mask on failure. That's the whole vibe check πŸ’…

🌈 SEE ALSO 🌈

Kernel file ./drivers/ata/libata-core.c is right there, and then the whole friend group is:


β€” source/version: ./drivers/ata; date: October 2026; page: ata_exec_internal(9) 🫢✨

πŸ“¦ where this page comes from