45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
/* long_work.c - Workqueue intended for long-running operations. */
|
|
|
|
/*
|
|
* Copyright (c) 2022 Nordic Semiconductor ASA
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
#include <zephyr/kernel.h>
|
|
#include <zephyr/init.h>
|
|
|
|
K_THREAD_STACK_DEFINE(bt_lw_stack_area, CONFIG_BT_LONG_WQ_STACK_SIZE);
|
|
static struct k_work_q bt_long_wq;
|
|
|
|
int bt_long_wq_schedule(struct k_work_delayable *dwork, k_timeout_t timeout)
|
|
{
|
|
return k_work_schedule_for_queue(&bt_long_wq, dwork, timeout);
|
|
}
|
|
|
|
int bt_long_wq_reschedule(struct k_work_delayable *dwork, k_timeout_t timeout)
|
|
{
|
|
return k_work_reschedule_for_queue(&bt_long_wq, dwork, timeout);
|
|
}
|
|
|
|
int bt_long_wq_submit(struct k_work *work)
|
|
{
|
|
return k_work_submit_to_queue(&bt_long_wq, work);
|
|
}
|
|
|
|
static int long_wq_init(const struct device *d)
|
|
{
|
|
ARG_UNUSED(d);
|
|
|
|
const struct k_work_queue_config cfg = {.name = "BT_LW_WQ"};
|
|
|
|
k_work_queue_init(&bt_long_wq);
|
|
|
|
k_work_queue_start(&bt_long_wq, bt_lw_stack_area,
|
|
K_THREAD_STACK_SIZEOF(bt_lw_stack_area),
|
|
CONFIG_BT_LONG_WQ_PRIO, &cfg);
|
|
|
|
return 0;
|
|
}
|
|
|
|
SYS_INIT(long_wq_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT);
|