os_workqueue.h 源码
2026/7/20大约 1 分钟源码参考内核工作队列头文件
os_workqueue.h — 工作队列接口头文件
源文件路径: kernel/include/os_workqueue.h
引用章节: 4.3.7 工作队列
完整源码
#ifndef __OS_WORKQUEUE_H__
#define __OS_WORKQUEUE_H__
#include <oneos_config.h>
#include <os_stddef.h>
#include <os_list.h>
#include <os_timer.h>
#include <os_task.h>
#include <os_sem.h>
#include <os_spinlock.h>
#include <os_dummy.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifdef OS_USING_WORKQUEUE
#define OS_WORK_STAGE_IDLE 0x0 /* 空闲 */
#define OS_WORK_STAGE_DELAY 0x1 /* 延时等待 */
#define OS_WORK_STAGE_PENDING 0x2 /* 待执行 */
typedef struct dummy_workqueue os_workqueue_dummy_t;
typedef os_workqueue_dummy_t *os_workqueue_id;
#define OS_WORKQUEUE_DEFINE(name) os_workqueue_dummy_t name
typedef struct dummy_work os_work_dummy_t;
typedef os_work_dummy_t *os_work_id;
#define OS_WORK_DEFINE(name) os_work_dummy_t name
/* 创建工作队列(内部创建独立任务处理 work) */
extern os_workqueue_id os_workqueue_create(os_workqueue_dummy_t *queue_cb,
const char *name,
void *stack_begin,
uint32_t stack_size,
uint8_t priority,
int32_t cpu_index);
/* 初始化/去初始化 work */
extern os_work_id os_work_init(os_work_dummy_t *work, void (*func)(void *data), void *data);
extern void os_work_deinit(os_work_id work_id);
/* 投递 work 到工作队列,delay_time 为延时执行时间(tick) */
extern os_err_t os_work_run(os_workqueue_id queue_id, os_work_id work_id,
os_tick_t delay_time);
/* 停止 work(sync=OS_TRUE 等待 work 执行完毕) */
extern os_err_t os_work_stop(os_work_id work_id, os_bool_t sync);
#ifdef OS_USING_SYSTEM_WORKQUEUE
/* 使用系统工作队列 */
extern os_err_t os_sys_work_run(os_work_id work_id, os_tick_t delay_time);
#endif
#endif /* OS_USING_WORKQUEUE */
#ifdef __cplusplus
}
#endif
#endif /* __OS_WORKQUEUE_H__ */关键说明
| API | 功能 | 说明 |
|---|---|---|
os_workqueue_create | 创建工作队列 | 内部创建独立任务处理 work |
os_work_init | 初始化 work | 设置回调函数和参数 |
os_work_run | 投递 work | delay_time=0 立即执行,非零延时执行 |
os_sys_work_run | 系统工作队列 | 使用内核预创建的系统工作队列,无需自建 |