ata_mode_string(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

🌸 ata_mode_string(9) 🌸

okay bestie, so this is a kernel API manual page β€” like, a lil' reference card from the Kernel API Manual era β€” and today's main character is ata_mode_string. she converts xfer masks to strings. that's it. that's the whole gig. and honestly? she ate. πŸ’…


✨ NAME ✨

ata_mode_string β€” convert xfer_mask to string πŸ’–

πŸ¦‹ SYNOPSIS πŸ¦‹

const char * ata_mode_string (unsigned int xfer_mask );

πŸŽ€ ARGUMENTS πŸŽ€

  • xfer_mask β€” a mask of bits that are supported, and here's the lil' plot twist bestie: only the highest bit counts. the rest are just... there. vibes only. lowkey decorative. 🫢

πŸ’œ DESCRIPTION πŸ’œ

so what she does is β€” she determines the string that represents the highest speed, aka the highest bit in modemask. that's the whole assignment. pick the top bit, hand back the name. iconic, no notes. ⭐

LOCKING: None. 🧚 like, zero locking. none. she's chill like that.

🌈 RETURN 🌈

she returns a constant C string representing the highest speed listed in mode_mask β€” or, if there's nothing to report, the constant C string "<n/a>". that's the fallback. that's the safe word. πŸ“

ngl "<n/a>" is giving "she's not mad, she's just disappointed" energy 😭

πŸ‘‘ SEE ALSO πŸ‘‘

okay so this is the part where the page just lists literally everyone in the building, and I mean everyone, so buckle up bestie β€” we're doing the full roll call, fr fr, no skipping, no "you get the idea", every single one: πŸ’€

Kernel file ./drivers/ata/libata-core.c, 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_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_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)

like I said. everyone. the whole group chat got added to the call. πŸ“žβœ¨


and that's the page bestie!! 🫢 this one lives in ./drivers/ata, dated October 2026, and it's titled ata_mode_string(9) β€” so like, if you ever need to cite her, that's the drip. go forth and convert those masks, mwah πŸ’‹πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from