diff options
| author | tangyuxin <[email protected]> | 2021-02-07 10:30:25 +0800 |
|---|---|---|
| committer | tangyuxin <[email protected]> | 2021-02-07 10:30:25 +0800 |
| commit | a96156faf11d97e50687732f95a2d589c39dc194 (patch) | |
| tree | e1d6ce1735ec3a07c3a48a5f4a9e1a6a9ef4cf74 /components/drivers/src/workqueue.c | |
| parent | 83dca09e1c31637583b99823c86ed86fa3e12491 (diff) | |
[workqueue] 提交正在执行的工作,返回 BUSY
Diffstat (limited to 'components/drivers/src/workqueue.c')
| -rw-r--r-- | components/drivers/src/workqueue.c | 8 |
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) { |
