summaryrefslogtreecommitdiff
path: root/components/drivers/src/workqueue.c
diff options
context:
space:
mode:
authortangyuxin <[email protected]>2021-02-07 10:30:25 +0800
committertangyuxin <[email protected]>2021-02-07 10:30:25 +0800
commita96156faf11d97e50687732f95a2d589c39dc194 (patch)
treee1d6ce1735ec3a07c3a48a5f4a9e1a6a9ef4cf74 /components/drivers/src/workqueue.c
parent83dca09e1c31637583b99823c86ed86fa3e12491 (diff)
[workqueue] 提交正在执行的工作,返回 BUSY
Diffstat (limited to 'components/drivers/src/workqueue.c')
-rw-r--r--components/drivers/src/workqueue.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/components/drivers/src/workqueue.c b/components/drivers/src/workqueue.c
index ce1ca071c3..f6bb6114aa 100644
--- a/components/drivers/src/workqueue.c
+++ b/components/drivers/src/workqueue.c
@@ -90,6 +90,7 @@ static rt_err_t _workqueue_submit_work(struct rt_workqueue *queue,
struct rt_work *work, rt_tick_t ticks)
{
rt_base_t level;
+ rt_err_t err;
level = rt_hw_interrupt_disable();
/* remove list */
@@ -103,6 +104,11 @@ static rt_err_t _workqueue_submit_work(struct rt_workqueue *queue,
rt_list_insert_after(queue->work_list.prev, &(work->list));
work->flags |= RT_WORK_STATE_PENDING;
work->workqueue = queue;
+ err = RT_EOK;
+ }
+ else
+ {
+ err = -RT_EBUSY;
}
/* whether the workqueue is doing work */
@@ -118,7 +124,7 @@ static rt_err_t _workqueue_submit_work(struct rt_workqueue *queue,
{
rt_hw_interrupt_enable(level);
}
- return RT_EOK;
+ return err;
}
else if (ticks < RT_TICK_MAX / 2)
{