/* * Copyright (c) 2025 Embeint Pty Ltd * * SPDX-License-Identifier: Apache-2.0 */ #include #include "modem_workqueue.h" static struct k_work_q modem_work_q; static K_THREAD_STACK_DEFINE(modem_stack_area, CONFIG_MODEM_DEDICATED_WORKQUEUE_STACK_SIZE); int modem_work_submit(struct k_work *work) { return k_work_submit_to_queue(&modem_work_q, work); } int modem_work_schedule(struct k_work_delayable *dwork, k_timeout_t delay) { return k_work_schedule_for_queue(&modem_work_q, dwork, delay); } int modem_work_reschedule(struct k_work_delayable *dwork, k_timeout_t delay) { return k_work_reschedule_for_queue(&modem_work_q, dwork, delay); } static int modem_work_q_init(void) { /* Boot the dedicated workqueue */ k_work_queue_init(&modem_work_q); k_work_queue_start(&modem_work_q, modem_stack_area, K_THREAD_STACK_SIZEOF(modem_stack_area), CONFIG_MODEM_DEDICATED_WORKQUEUE_PRIORITY, NULL); k_thread_name_set(k_work_queue_thread_get(&modem_work_q), "modem_workq"); return 0; } SYS_INIT(modem_work_q_init, POST_KERNEL, 0);