atapi_send_cdb(9)
π atapi_send_cdb β from the Kernel API Manual, bestie
okay so real talk, this is a page straight out of the Kernel API Manual, and it's about shipping CDB bytes straight to the hardware. tiny function, big mood. let's get into it π
β¨ NAME β¨
atapi_send_cdb β literally just write those CDB bytes out to the hardware, no thoughts head empty π¦
πΈ SYNOPSIS πΈ
void atapi_send_cdb (struct ata_port *ap , struct ata_queued_cmd *qc );
that's it. that's the whole signature. void return, two args, iconic behavior β¨
π«Ά ARGUMENTS π«Ά
apβ the port your ATAPI device is attached to. like, your device's home address, its main character location πqcβ the Taskfile that's currently active. the one on stage right now, the one we're working with π
π DESCRIPTION π
so here's the vibe: the device has already indicated it's ready to accept a CDB (it said yes, it gave consent, the readiness check passed β ). when that happens, this function gets called. and what does it do? it sends the CDB. that's it. that's the job. no cap π§
LOCKING: caller. meaning the caller owns the locking, not this function. don't come for this function about locks, it is not the one holding them π
π₯ SEE ALSO π₯
okay bestie this list is long, like genuinely enormous, so buckle up. everything here lives in the kernel file ./drivers/ata/libata-sff.c β go read all of it, it ate π
ata_sff_check_status(9)ata_sff_altstatus(9)ata_sff_irq_status(9)ata_sff_sync(9)ata_sff_pause(9)ata_sff_dma_pause(9)ata_sff_wait_ready(9)ata_sff_set_devctl(9)ata_sff_dev_select(9)ata_dev_select(9)ata_sff_irq_on(9)ata_sff_tf_load(9)ata_sff_tf_read(9)ata_sff_exec_command(9)ata_tf_to_host(9)ata_sff_data_xfer(9)ata_sff_data_xfer32(9)ata_pio_sector(9)ata_pio_sectors(9)__atapi_pio_bytes(9)atapi_pio_bytes(9)ata_hsm_ok_in_wq(9)ata_hsm_qc_complete(9)ata_sff_hsm_move(9)ata_sff_qc_issue(9)ata_sff_qc_fill_rtf(9)ata_sff_port_intr(9)ata_sff_interrupt(9)ata_sff_lost_interrupt(9)ata_sff_freeze(9)ata_sff_thaw(9)ata_sff_prereset(9)ata_devchk(9)ata_sff_dev_classify(9)ata_sff_wait_after_reset(9)ata_sff_softreset(9)sata_sff_hardreset(9)ata_sff_postreset(9)ata_sff_drain_fifo(9)ata_sff_error_handler(9)ata_sff_std_ports(9)ata_pci_sff_init_host(9)ata_pci_sff_prepare_host(9)ata_pci_sff_activate_host(9)ata_pci_sff_init_one(9)ata_bmdma_fill_sg(9)ata_bmdma_fill_sg_dumb(9)ata_bmdma_qc_prep(9)ata_bmdma_dumb_qc_prep(9)ata_bmdma_qc_issue(9)ata_bmdma_port_intr(9)ata_bmdma_interrupt(9)ata_bmdma_error_handler(9)ata_bmdma_post_internal_cmd(9)ata_bmdma_irq_clear(9)ata_bmdma_setup(9)ata_bmdma_start(9)ata_bmdma_stop(9)ata_bmdma_status(9)ata_bmdma_port_start(9)ata_bmdma_port_start32(9)ata_pci_bmdma_clear_simplex(9)ata_pci_bmdma_init(9)ata_pci_bmdma_prepare_host(9)ata_pci_bmdma_init_one(9)ata_sff_port_init(9)
like I said. a lot. but every single one is a baddie in their own right π
π sign-off π
this little beauty lives over in ./drivers/ata, dated October 2026, and it belongs to the Kernel API Manual β that's the whole vibe, go off, read the source, hydrate, and don't forget the caller owns the locking ππ
π¦ 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