2525#include <sof/audio/module_adapter/library/userspace_proxy.h>
2626#include <sof/audio/module_adapter/library/userspace_proxy_user.h>
2727
28+ /* include definitions from generated file */
29+ #include <zephyr/syscalls/userspace_proxy_user.h>
30+
2831void userspace_proxy_handle_request (struct processing_module * mod , struct module_params * params )
2932{
3033 const struct module_interface * ops = params -> context -> interface ;
31-
34+ params -> core = get_core_id ();
3235 switch (params -> cmd ) {
3336 case USER_PROXY_MOD_CMD_AGENT_START :
3437 /* Set pointer to user accessible mod_cfg structure. */
3538 params -> ext .agent .params .mod_cfg = & params -> ext .agent .mod_cfg ;
3639
3740 params -> status = params -> ext .agent .start_fn (& params -> ext .agent .params ,
3841 & params -> ext .agent .out_interface );
42+ cache_flush (params -> dump_ptr , CONFIG_MM_DRV_PAGE_SIZE );
3943 break ;
4044
4145 case USER_PROXY_MOD_CMD_INIT :
@@ -120,3 +124,26 @@ void userspace_proxy_worker_handler(struct k_work_user *work_item)
120124 userspace_proxy_handle_request (params -> mod , params );
121125 k_event_post (user_work_item -> event , DP_TASK_EVENT_IPC_DONE );
122126}
127+
128+ #include <zephyr/internal/syscall_handler.h>
129+ int z_impl_get_core_id (void )
130+ {
131+ return cpu_get_id () + 100 ;
132+ }
133+ int z_vrfy_get_core_id (void )
134+ {
135+ return z_impl_get_core_id ();
136+ }
137+ #include <zephyr/syscalls/get_core_id_mrsh.c>
138+
139+ int z_impl_cache_flush (void * addr , uint32_t size )
140+ {
141+ sys_cache_data_flush_range ((__sparse_force void * )addr , size );
142+ //sys_cache_data_flush_all();
143+ return 0 ;
144+ }
145+ int z_vrfy_cache_flush (void * addr , uint32_t size )
146+ {
147+ return z_impl_cache_flush (addr , size );
148+ }
149+ #include <zephyr/syscalls/cache_flush_mrsh.c>
0 commit comments