ata_wait_ready(9)
β¨ ata_wait_ready(9) β¨
okay so this is a page from the Kernel API Manual, and honestly it's giving "quietly holds everything together" energy π she's a kernel function, section 9, and she's here to make your link behave.
πΈ NAME πΈ
ata_wait_ready β literally just waiting for the link to become ready, that's the whole gig π«Ά
π SYNOPSIS π
int ata_wait_ready (struct ata_link *link , unsigned long deadline , int
(*check_ready)(struct ata_link *link) );
bestie she takes three things and returns an int, no cap β¨
π¦ ARGUMENTS π¦
linkβ the link you're waiting on. the main character of this whole operation πdeadlineβ the deadline, measured in jiffies, for the operation. like a "be ready by this time or we're done here" situation β°check_readyβ a callback that checks whether the link is ready. she does the vibe check so you don't have to π
π DESCRIPTION π
So the whole thing is: wait for the link to become ready. simple. iconic. periodt.
Here's the deal with check_ready though β the return values are doing a LOT of work here, so listen up π₯:
- return a positive number if the link is ready β
- return
0if it isn't ready yet β³ - return
-ENODEVif the link doesn't seem to be occupied π - return other errno values for other error conditions π©
Transient -ENODEV conditions are allowed for ATA_TMOUT_FF_WAIT. (yes that's a real constant, and yes she's specific about it π
)
LOCKING: EH context. that's it, that's the whole locking section. respect it π
β RETURN β
0if the link is ready before the deadline π- otherwise,
-errnoπ (whatever errno, she'll hand it right back to you)
π SEE ALSO π
okay this is the part where she lists literally every single friend she has, and there are SO many. she's not leaving anyone out, that's just who she is π«Ά
Kernel file ./drivers/ata/libata-core.c, plus:
ata_link_next(9), ata_dev_next(9), ata_dev_phys_link(9), ata_force_cbl(9),
ata_force_pflags(9), ata_force_link_limits(9), ata_force_xfermask(9),
ata_force_quirks(9), atapi_cmd_type(9), ata_set_rwcmd_protocol(9),
ata_tf_read_block(9), ata_build_rw_tf(9), ata_pack_xfermask(9),
ata_unpack_xfermask(9), ata_xfer_mask2mode(9), ata_xfer_mode2mask(9),
ata_xfer_mode2shift(9), ata_mode_string(9), ata_dev_classify(9),
ata_id_string(9), ata_id_c_string(9), ata_read_native_max_address(9),
ata_set_max_sectors(9), ata_hpa_resize(9), ata_dump_id(9),
ata_id_xfermask(9), ata_exec_internal(9), ata_pio_need_iordy(9),
ata_pio_mask_no_iordy(9), ata_do_dev_read_id(9), ata_dev_read_id(9),
ata_dev_power_set_standby(9), ata_dev_power_set_active(9),
ata_read_log_page(9), ata_dev_configure(9), ata_cable_40wire(9),
ata_cable_80wire(9), ata_cable_unknown(9), ata_cable_ignore(9),
ata_cable_sata(9), sata_print_link_status(9), ata_dev_pair(9),
ata_timing_cycle2mode(9), ata_down_xfermask_limit(9), ata_set_mode(9),
ata_wait_after_reset(9), ata_std_prereset(9), ata_std_postreset(9),
ata_dev_same_device(9), ata_dev_reread_id(9), ata_dev_revalidate(9),
ata_is_40wire(9), cable_is_40wire(9), ata_dev_xfermask(9),
ata_dev_set_xfermode(9), ata_dev_set_feature(9), ata_dev_init_params(9),
atapi_check_dma(9), ata_std_qc_defer(9), ata_sg_init(9),
ata_sg_clean(9), ata_sg_setup(9), swap_buf_le16(9), ata_qc_free(9),
ata_qc_complete(9), ata_qc_get_active(9), ata_qc_issue(9),
ata_phys_link_online(9), ata_phys_link_offline(9), ata_link_online(9),
ata_link_offline(9), ata_host_suspend(9), ata_host_resume(9),
ata_dev_init(9), ata_link_init(9), sata_link_init_spd(9),
ata_port_alloc(9), ata_host_alloc(9), ata_host_alloc_pinfo(9),
ata_finalize_port_ops(9), ata_host_start(9), ata_host_init(9),
ata_host_register(9), ata_host_activate(9), ata_dev_free_resources(9),
ata_port_detach(9), ata_host_detach(9), ata_pci_remove_one(9),
ata_platform_remove_one(9), ata_msleep(9), ata_wait_register(9)
and that's the page, bestie π this one lives in ./drivers/ata and it's dated October 2026 β so yeah, she's from the future, and she's still waiting for that link to be ready. slay π§β¨
π¦ 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