| 166 | } |
| 167 | |
| 168 | static rt_err_t _workqueue_cancel_work(struct rt_workqueue *queue, struct rt_work *work) |
| 169 | { |
| 170 | rt_base_t level; |
| 171 | rt_err_t err; |
| 172 | |
| 173 | level = rt_spin_lock_irqsave(&(queue->spinlock)); |
| 174 | rt_list_remove(&(work->list)); |
| 175 | work->flags = 0; |
| 176 | err = queue->work_current != work ? RT_EOK : -RT_EBUSY; |
| 177 | work->workqueue = RT_NULL; |
| 178 | rt_spin_unlock_irqrestore(&(queue->spinlock), level); |
| 179 | return err; |
| 180 | } |
| 181 | |
| 182 | /** |
| 183 | * @brief Initialize a work item, binding with a callback function. |
no test coverage detected