diff --git a/arch/sim/src/sim/sim_initialize.c b/arch/sim/src/sim/sim_initialize.c index ef8b96d8f68..a5776962b7d 100644 --- a/arch/sim/src/sim/sim_initialize.c +++ b/arch/sim/src/sim/sim_initialize.c @@ -224,10 +224,6 @@ static int sim_loop_task(int argc, char **argv) sched_lock(); -#ifdef CONFIG_SIM_NETUSRSOCK - host_usrsock_loop(); -#endif - #ifdef CONFIG_SIM_SOUND sim_audio_loop(); #endif diff --git a/arch/sim/src/sim/sim_usrsock.c b/arch/sim/src/sim/sim_usrsock.c index ea788d93fa6..8605890fc8a 100644 --- a/arch/sim/src/sim/sim_usrsock.c +++ b/arch/sim/src/sim/sim_usrsock.c @@ -40,6 +40,7 @@ ****************************************************************************/ #define SIM_USRSOCK_BUFSIZE (400 * 1024) +#define SIM_USRSOCK_PERIOD MSEC2TICK(CONFIG_SIM_LOOP_INTERVAL) /**************************************************************************** * Private Types @@ -49,6 +50,7 @@ struct usrsock_s { uint8_t in[SIM_USRSOCK_BUFSIZE]; uint8_t out[SIM_USRSOCK_BUFSIZE]; + struct work_s work; }; /**************************************************************************** @@ -391,6 +393,12 @@ static const usrsock_handler_t g_usrsock_handler[] = [USRSOCK_REQUEST_SHUTDOWN] = usrsock_shutdown_handler, }; +static void sim_usrsock_work(void *arg) +{ + work_queue(HPWORK, &g_usrsock.work, (void *)sim_usrsock_work, + NULL, SIM_USRSOCK_PERIOD); +} + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -402,6 +410,8 @@ int usrsock_event_callback(int16_t usockid, uint16_t events) void usrsock_register(void) { + work_queue(HPWORK, &g_usrsock.work, (void *)sim_usrsock_work, + NULL, SIM_USRSOCK_PERIOD); } /****************************************************************************