ata_wait_ready(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ 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 0 if it isn't ready yet ⏳
  • return -ENODEV if 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 ⭐

  • 0 if 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