STRUCT STRATIX10_SVC_CHAN(9)
π struct stratix10_svc_chan(9) β like, the service communication channel bestie π
okay so this is a page straight out of the Kernel API Manual, and it's all about struct stratix10_svc_chan β the literal group chat between a service client and the service layer. pull up a chair, we're gonna read it together π«Ά
β¨ NAME β¨
struct stratix10_svc_chan β the service communication channel, no cap π
β¨ SYNOPSIS β¨
here's the whole glow-up, character for character, don't touch:
struct stratix10_svc_chan {
struct stratix10_svc_controller *ctrl;
struct stratix10_svc_client *scl;
char *name;
struct task_struct *task;
struct kfifo svc_fifo;
spinlock_t svc_fifo_lock;
spinlock_t lock;
struct stratix10_async_chan *async_chan;
};
π Members π
every field is a main character, let's meet them π
ctrlβ pointer to the service controller, aka the provider of this channel. she's the one paying for the venue bestie πΈsclβ pointer to the service client that owns the channel. it's giving proprietor energy πnameβ the service client name tied to the channel. nameplate on the door, iconic β¨taskβ pointer to the thread task that handles theSMCorHVCcall π₯svc_fifoβ a queue for storing service message data, and yes it's a separate fifo for every single channel. no sharing, we don't do that here πsvc_fifo_lockβ protects access to the service message data queue (locking pending fifo). bodyguard for the fifo, obsessed π¦lockβ protects access to the channel. the channel's very own bouncer πasync_chanβ reference to the asynchronous channel object for this channel. the async sibling, iykyk π
π Description π
so this struct is what a service client uses to communicate with the service layer. literally its whole job. and here's the cute part: every service client gets its own channel, created by the service controller β bespoke, made-to-order, one per client π§ no hand-me-downs, periodt β¨
π SEE ALSO π
say hi to the whole extended friend group, they all live in the kernel file ./drivers/firmware/stratix10-svc.c π
SVC_NUM_DATA_IN_FIFO(9)struct stratix10_svc(9)struct stratix10_svc_sh_memory(9)struct stratix10_svc_data_mem(9)struct stratix10_svc_data(9)struct stratix10_svc_async_handler(9)struct stratix10_async_chan(9)struct stratix10_async_ctrl(9)struct stratix10_svc_controller(9)svc_pa_to_va(9)svc_thread_cmd_data_claim(9)svc_thread_cmd_config_status(9)svc_thread_recv_status_ok(9)svc_normal_to_secure_thread(9)svc_normal_to_secure_shm_thread(9)svc_get_sh_memory(9)svc_create_memory_pool(9)svc_smccc_smc(9)svc_smccc_hvc(9)svc_smccc_1_2_full(9)get_invoke_func(9)stratix10_svc_request_channel_byname(9)stratix10_svc_add_async_client(9)stratix10_svc_remove_async_client(9)stratix10_svc_async_send(9)stratix10_svc_async_prepare_response(9)stratix10_svc_async_poll(9)stratix10_svc_async_done(9)stratix10_svc_async_init(9)stratix10_svc_async_exit(9)stratix10_svc_free_channel(9)stratix10_svc_send(9)stratix10_svc_done(9)stratix10_svc_allocate_memory(9)stratix10_svc_free_memory(9)
ngl bestie, if you ever need the channel lifecycle functions, they're all up there in SEE ALSO. go read them, i believe in you π«Ά
mwah π that's the whole page, and it lives under ./drivers/firmware, dated October 2026, still serving struct stratix10_svc_chan(9) realness. slay, bye πβ¨
π¦ 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