do_xfer(9)
π« do_xfer(9) β like, the whole kernel API manual, but make it make sense π«
okay so bestie, gather round, because we're reading a kernel API man page together and honestly? it's kind of a bop. this one is do_xfer, from the Kernel API Manual, and it's giving "one function, one job, zero drama" energy. let's get into it π«Ά
β¨ NAME β¨
do_xfer β Do one transfer. that's it. that's the whole vibe. one (1) transfer, done. periodt π
πΈ SYNOPSIS πΈ
here's the signature, copy it exactly bestie, no typos or the compiler will simply end you:
int do_xfer (const struct scmi_protocol_handle *ph , struct scmi_xfer
*xfer );
it returns an int, it takes those two pointers, and it is literally the main character of this page π
π ARGUMENTS π
two args, both pointers, both important, no cap:
phβ Pointer to SCMI protocol handle. yeah, that's the context-y one, your "who am I and what protocol am I speaking" situation π¦xferβ Transfer to initiate and wait for response. so you hand it over and then you wait, like a bestie waiting for a text back π
β RETURN β
okay so what comes back:
-ETIMEDOUTin case of no response β like, nobody picked up the phone π- if it's a transmit error, it returns the corresponding error β whatever went wrong on the way out, that's what you get
- else, if all goes well β
0. a clean zero. the slay-est return value of all π
π SEE ALSO π
this list is long and honestly it ate. every single one, in order, no skips, iykyk:
- Kernel file
./drivers/firmware/arm_scmi/driver.c struct scmi_xfers_info(9)struct scmi_protocol_instance(9)struct scmi_info(9)scmi_create_protocol_devices(9)scmi_xfer_token_set(9)scmi_xfer_token_clear(9)scmi_xfer_inflight_register_unlocked(9)scmi_xfer_inflight_register(9)scmi_xfer_raw_inflight_register(9)scmi_xfer_pending_set(9)scmi_xfer_get(9)scmi_xfer_raw_get(9)scmi_xfer_raw_channel_get(9)__scmi_xfer_put(9)scmi_xfer_raw_put(9)scmi_xfer_lookup_unlocked(9)scmi_bad_message_trace(9)scmi_msg_response_validate(9)scmi_xfer_state_update(9)scmi_xfer_command_acquire(9)scmi_rx_callback(9)xfer_put(9)scmi_wait_for_message_response(9)scmi_xfer_raw_wait_for_message_response(9)do_xfer_with_response(9)xfer_get_init(9)version_get(9)scmi_set_protocol_priv(9)scmi_get_protocol_priv(9)scmi_common_extended_name_get(9)scmi_common_get_max_msg_size(9)scmi_protocol_msg_check(9)struct scmi_iterator(9)scmi_revision_area_get(9)scmi_protocol_version_negotiate(9)scmi_protocol_version_initialize(9)scmi_alloc_init_protocol_instance(9)scmi_get_protocol_instance(9)scmi_protocol_acquire(9)scmi_protocol_release(9)scmi_devm_protocol_get(9)scmi_devm_protocol_acquire(9)scmi_devm_protocol_put(9)scmi_is_transport_atomic(9)scmi_handle_get(9)scmi_handle_put(9)scmi_channels_setup(9)
π§ friendly reminder: everything literal up there β the function names, the(9)suffixes, the file path β is exact. don't go "fixing" the underscores or the double-underscore on__scmi_xfer_put, she's sensitive π
π sign-off π
and that's the page! it lives under ./drivers/firmware/arm_scmi, dated October 2026, and it goes by do_xfer(9). mwah, go read driver.c, drink some water, and remember: wait for your response, bestie πβ¨
π¦ 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