__scmi_xfer_put(9)
π __scmi_xfer_put β NAME π
okay so this is from the Kernel API Manual and it's genuinely justβ¦ the cleanup girlie of the SCMI driver world. __scmi_xfer_put β Release a message. that's the whole vibe. u give it back, it goes home. π
β¨ SYNOPSIS β¨
void __scmi_xfer_put (struct scmi_xfers_info *minfo , struct scmi_xfer
*xfer );
like literally two args, no return value, she just does her thing and dips. π
πΈ ARGUMENTS πΈ
minfoβ pointer to the Tx/Rx Message management info, based on channel type. bestie this is the little bookkeeping hub that knows where all the messages live, depends on what kind of channel u got π¦xferβ the message that was reserved byscmi_xfer_get. yes, the one u borrowed earlier. time to give it back, no keeping it, that's not cute π
π DESCRIPTION π
so here's the tea β β after it does a refcount check, it possibly releases an xfer. "possibly" is doing a lot of work there and honestly iconic of her: she's not gonna free something that's still being held by somebody else, that would be a whole mess.
when she does go through with it, here's the full routine:
- clearing the token slot β¨
- removing
xferfrompending_xfersβ ur not pending anymore bestie, u graduated π - putting it back into
free_xfersβ home again, home again π
and the important technical bit, no cap: this holds a spinlock to maintain integrity of internal data structures. so like, don't be weird about it, the lock is load-bearing fr fr. π
π¦ SEE ALSO π¦
okay this list is LONG, like genuinely a whole group chat of related functions, but we're listing every single one because we don't skip people in this house π
- the 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_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)
ngl the fact that there's bothscmi_xfer_putenergy ANDscmi_xfer_raw_putenergy in that listβ¦ sisters are doing it for themselves π
and that's the whole page bestie!! no notes, she ate, periodt π«Ά this lil masterpiece lives over in ./drivers/firmware/arm_scmi and dated October 2026 β yeah, future girlie behaviour, we love to see it πβ
π¦ 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