TuyaOS
tal_workqueue.h
浏览该文件的文档.
1
10#ifndef __TAL_WORKQUEUE_H__
11#define __TAL_WORKQUEUE_H__
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17#include "tuya_cloud_types.h"
18#include "tal_thread.h"
19
20typedef enum {
21 LOOP_ONCE,
22 LOOP_CYCLE
23}LOOP_TYPE;
24
25typedef VOID_T* WORKQUEUE_HANDLE;
26typedef VOID_T (*WORKQUEUE_CB)(VOID_T *data);
27
28typedef struct {
29 WORKQUEUE_CB cb;
30 VOID_T *data;
32typedef BOOL_T (*WORKQUEUE_TRAVERSE_CB)(WORK_ITEM_T*item, VOID_T *ctx);
33
43OPERATE_RET tal_workqueue_create(CONST UINT16_T queue_len, THREAD_CFG_T *thread_cfg, WORKQUEUE_HANDLE *handle);
44
54OPERATE_RET tal_workqueue_schedule(WORKQUEUE_HANDLE handle, WORKQUEUE_CB cb, VOID_T *data);
55
65OPERATE_RET tal_workqueue_schedule_instant(WORKQUEUE_HANDLE handle, WORKQUEUE_CB cb, VOID_T *data);
66
76OPERATE_RET tal_workqueue_cancel(WORKQUEUE_HANDLE handle, WORKQUEUE_CB cb, VOID_T *data);
77
87OPERATE_RET tal_workqueue_traverse(WORKQUEUE_HANDLE handle, WORKQUEUE_TRAVERSE_CB cb, VOID_T *ctx);
88
96UINT16_T tal_workqueue_get_num(WORKQUEUE_HANDLE handle);
97
105OPERATE_RET tal_workqueue_release(WORKQUEUE_HANDLE handle);
106
114THREAD_HANDLE tal_workqueue_get_thread(WORKQUEUE_HANDLE handle);
115
116typedef VOID_T* DELAYED_WORK_HANDLE;
117
128OPERATE_RET tal_workqueue_init_delayed(WORKQUEUE_HANDLE handle, WORKQUEUE_CB cb, VOID_T *data,
129 DELAYED_WORK_HANDLE *delayed_work);
130
140OPERATE_RET tal_workqueue_start_delayed(DELAYED_WORK_HANDLE delayed_work,
141 TIME_MS interval, LOOP_TYPE type);
142
150OPERATE_RET tal_workqueue_stop_delayed(DELAYED_WORK_HANDLE delayed_work);
151
159OPERATE_RET tal_workqueue_cancel_delayed(DELAYED_WORK_HANDLE delayed_work);
160
161#ifdef __cplusplus
162}
163#endif
164#endif
165
thread parameters
Definition: tal_thread.h:73
Definition: tal_workqueue.h:28
THREAD_HANDLE tal_workqueue_get_thread(WORKQUEUE_HANDLE handle)
get thread handle of the workqueue
OPERATE_RET tal_workqueue_stop_delayed(DELAYED_WORK_HANDLE delayed_work)
stop delayed work
OPERATE_RET tal_workqueue_schedule(WORKQUEUE_HANDLE handle, WORKQUEUE_CB cb, VOID_T *data)
put work task in workqueue
UINT16_T tal_workqueue_get_num(WORKQUEUE_HANDLE handle)
get the workqueue item number
OPERATE_RET tal_workqueue_traverse(WORKQUEUE_HANDLE handle, WORKQUEUE_TRAVERSE_CB cb, VOID_T *ctx)
traverse the queue with specific callback
OPERATE_RET tal_workqueue_cancel(WORKQUEUE_HANDLE handle, WORKQUEUE_CB cb, VOID_T *data)
cancel work task in workqueue
OPERATE_RET tal_workqueue_create(CONST UINT16_T queue_len, THREAD_CFG_T *thread_cfg, WORKQUEUE_HANDLE *handle)
create and initialize a workqueue which runs in thread context
OPERATE_RET tal_workqueue_cancel_delayed(DELAYED_WORK_HANDLE delayed_work)
cancel delayed work
OPERATE_RET tal_workqueue_start_delayed(DELAYED_WORK_HANDLE delayed_work, TIME_MS interval, LOOP_TYPE type)
put work in workqueue after delay
OPERATE_RET tal_workqueue_init_delayed(WORKQUEUE_HANDLE handle, WORKQUEUE_CB cb, VOID_T *data, DELAYED_WORK_HANDLE *delayed_work)
init delayed work in workqueue
OPERATE_RET tal_workqueue_schedule_instant(WORKQUEUE_HANDLE handle, WORKQUEUE_CB cb, VOID_T *data)
put work task in workqueue, instant will be dequeued first
OPERATE_RET tal_workqueue_release(WORKQUEUE_HANDLE handle)
release the workqueue