STRUCT SCMI_XFERS_INFO(9)
π struct scmi_xfers_info(9) β the kernel API manual, but make it make sense π
okay so bestie, welcome to the scmi_xfers_info page from the Kernel API Manual β¨ this is the struct that manages transfer information, and honestly? it's giving backstage-pass energy for every SCMI message in flight. let's get into it π¦
πΈ NAME πΈ
struct scmi_xfers_info β lowkey the structure that manages transfer information π
β¨ SYNOPSIS β¨
here's the whole shape of it, no cap, copied exactly because we do not mess with struct definitions:
struct scmi_xfers_info {
unsigned long *xfer_alloc_table;
spinlock_t xfer_lock;
int max_msg;
struct hlist_head free_xfers;
unsigned long pending_xfers[1 << (( SCMI_PENDING_XFERS_HT_ORDER_SZ)
- 1)];
};
π Members π
xfer_alloc_tableβ the bitmap table for allocated messages, iykyk π and plot twist: the index of this bitmap table is also used for the message sequence identifier. one table, two jobs, main character energy fr.xfer_lockβ protection for message allocation. it's the bouncer at the door of the alloc party πmax_msgβ the maximum number of messages that can be pending. that's the ceiling, the limit, the "no more bestie" number βfree_xfersβ a free list for available-to-use xfers π¦ it gets initialized with a number of xfers equal to the maximum allowed in-flight messages. so like, the guest list matches the venue capacity, obsessed.pending_xfersβ a hashtable, indexed bymsg_hdr.seq, used to keep all the currently in-flight messages π it's the "where is everyone right now" board and it is thriving.
π₯ SEE ALSO π₯
okay this list is LONG and honestly iconic, so here's every single one, no skips, periodt π
Kernel file ./drivers/firmware/arm_scmi/driver.c, plus:
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(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) β¨
and that's the whole vibe check, bestie π«Ά this page lives in ./drivers/firmware/arm_scmi and it's dated October 2026, page name struct scmi_xfers_info(9) β go forth and manage those transfers, you absolute icon ππ
π
π¦ 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