MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / _workqueue_work_completion

Function _workqueue_work_completion

components/drivers/ipc/workqueue.c:21–48  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

19#ifdef RT_USING_HEAP
20
21rt_inline rt_err_t _workqueue_work_completion(struct rt_workqueue *queue)
22{
23 rt_err_t result;
24
25 while (1)
26 {
27 /* try to take condition semaphore */
28 result = rt_sem_trytake(&(queue->sem));
29 if (result == -RT_ETIMEOUT)
30 {
31 /* it's timeout, release this semaphore */
32 rt_sem_release(&(queue->sem));
33 }
34 else if (result == RT_EOK)
35 {
36 /* keep the sem value = 0 */
37 result = RT_EOK;
38 break;
39 }
40 else
41 {
42 result = -RT_ERROR;
43 break;
44 }
45 }
46
47 return result;
48}
49
50static void _workqueue_thread_entry(void *parameter)
51{

Callers 1

_workqueue_thread_entryFunction · 0.85

Calls 2

rt_sem_trytakeFunction · 0.85
rt_sem_releaseFunction · 0.85

Tested by

no test coverage detected