ata_phys_link_online(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

okay so picture this: it's a Kernel API Manual page, the star of the show is ata_phys_link_online, and it's here to answer exactly ONE question for you. let's get into it ✨


🌸 NAME 🌸

ata_phys_link_online β€” the little function that tests whether the given link is online πŸ‘‘


✨ SYNOPSIS ✨

bool ata_phys_link_online (struct ata_link *link );

that's it, that's the whole vibe. one link, one bool. iconic.


πŸŽ€ ARGUMENTS πŸŽ€

  • link β€” the ATA link you wanna test. that's the one, that's the subject of the whole investigation πŸ•΅οΈβ€β™€οΈ

πŸ’– DESCRIPTION πŸ’–

so what does it do?? it tests whether link is online. simple, right? but hold up β€” there's a plot twist 😭

this function returns 0 if the online status of link cannot be obtained. meaning you literally CANNOT do the cute little equality thing in your head, because:

ata_link_online(link) != !ata_link_offline(link)

like, read that again. they are NOT each other's negation. that's not a typo, that's just how it is. it's giving "don't assume, actually check" energy πŸ’€

LOCKING: None. literally none. no locks, no drama, no waiting around 🫢


πŸ”₯ RETURN πŸ”₯

True if the port online status is available and online. both things. you need the status to be available AND the answer to be online. if the status can't even be obtained?? 0, bestie. no status, no True πŸ™ˆ


πŸ‘‘ SEE ALSO πŸ‘‘

okay bestie, buckle up, because this list is LONG and every single one of these deserves their moment 🌈

starting with the kernel file itself: ./drivers/ata/libata-core.c β€” plus, in the order they're listed:

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_ready(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_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 yes, ata_phys_link_offline(9), ata_link_online(9) and ata_link_offline(9) are all right there in the mix β€” the whole friend group showed up πŸ’œ


ngl the one thing to take away: 0 can mean "not online" OR "couldn't even tell you" β€” so don't go negating things assuming they're opposites, fr fr 😀

and that's the whole page, bestie πŸŽ€ this gem comes to you from ./drivers/ata, dated October 2026 β€” mwah, slay, see you in the next manpage βœ¨πŸ’…

πŸ“¦ where this page comes from