Skip to content

Commit 6cccf8c

Browse files
committed
judge return value of rt_thread_resume in components srcs
1 parent 888f75e commit 6cccf8c

File tree

8 files changed

+72
-32
lines changed

8 files changed

+72
-32
lines changed

components/drivers/audio/audio_pipe.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ static void _rt_pipe_resume_writer(struct rt_audio_pipe *pipe)
2626
tlist);
2727

2828
/* resume the write thread */
29-
rt_thread_resume(thread);
29+
if(rt_thread_resume(thread) == RT_EOK)
30+
rt_schedule();
3031

31-
rt_schedule();
3232
}
3333
}
3434

@@ -108,9 +108,8 @@ static void _rt_pipe_resume_reader(struct rt_audio_pipe *pipe)
108108
tlist);
109109

110110
/* resume the read thread */
111-
rt_thread_resume(thread);
112-
113-
rt_schedule();
111+
if(rt_thread_resume(thread) == RT_EOK)
112+
rt_schedule();
114113
}
115114
}
116115

components/drivers/ipc/completion.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ RTM_EXPORT(rt_completion_wait);
124124
void rt_completion_done(struct rt_completion *completion)
125125
{
126126
rt_base_t level;
127+
rt_bool_t need_schedule = RT_FALSE;
127128
RT_ASSERT(completion != RT_NULL);
128129

129130
if (completion->flag == RT_COMPLETED)
@@ -143,11 +144,14 @@ void rt_completion_done(struct rt_completion *completion)
143144
tlist);
144145

145146
/* resume it */
146-
rt_thread_resume(thread);
147+
if(rt_thread_resume(thread) == RT_EOK)
148+
need_schedule = RT_TRUE;
149+
147150
rt_hw_interrupt_enable(level);
148151

149152
/* perform a schedule */
150-
rt_schedule();
153+
if (need_schedule == RT_TRUE)
154+
rt_schedule();
151155
}
152156
else
153157
{

components/drivers/ipc/dataqueue.c

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ rt_err_t rt_data_queue_push(struct rt_data_queue *queue,
9292
rt_int32_t timeout)
9393
{
9494
rt_base_t level;
95+
rt_bool_t need_schedule = RT_FALSE;
9596
rt_thread_t thread;
9697
rt_err_t result;
9798

@@ -165,11 +166,14 @@ rt_err_t rt_data_queue_push(struct rt_data_queue *queue,
165166
tlist);
166167

167168
/* resume it */
168-
rt_thread_resume(thread);
169+
if(rt_thread_resume(thread) == RT_EOK)
170+
need_schedule = RT_TRUE;
171+
169172
rt_hw_interrupt_enable(level);
170173

171174
/* perform a schedule */
172-
rt_schedule();
175+
if (need_schedule == RT_TRUE)
176+
rt_schedule();
173177

174178
return result;
175179
}
@@ -209,6 +213,7 @@ rt_err_t rt_data_queue_pop(struct rt_data_queue *queue,
209213
rt_int32_t timeout)
210214
{
211215
rt_base_t level;
216+
rt_bool_t need_schedule = RT_FALSE;
212217
rt_thread_t thread;
213218
rt_err_t result;
214219

@@ -286,11 +291,14 @@ rt_err_t rt_data_queue_pop(struct rt_data_queue *queue,
286291
tlist);
287292

288293
/* resume it */
289-
rt_thread_resume(thread);
294+
if(rt_thread_resume(thread) == RT_EOK)
295+
need_schedule = RT_TRUE;
296+
290297
rt_hw_interrupt_enable(level);
291298

292299
/* perform a schedule */
293-
rt_schedule();
300+
if (need_schedule == RT_TRUE)
301+
rt_schedule();
294302
}
295303
else
296304
{
@@ -362,6 +370,7 @@ RTM_EXPORT(rt_data_queue_peek);
362370
void rt_data_queue_reset(struct rt_data_queue *queue)
363371
{
364372
rt_base_t level;
373+
rt_bool_t need_schedule = RT_FALSE;
365374
struct rt_thread *thread;
366375

367376
RT_ASSERT(queue != RT_NULL);
@@ -397,7 +406,8 @@ void rt_data_queue_reset(struct rt_data_queue *queue)
397406
* In rt_thread_resume function, it will remove current thread from
398407
* suspend list
399408
*/
400-
rt_thread_resume(thread);
409+
if(rt_thread_resume(thread) == RT_EOK)
410+
need_schedule = RT_TRUE;
401411

402412
/* enable interrupt */
403413
rt_hw_interrupt_enable(level);
@@ -421,14 +431,16 @@ void rt_data_queue_reset(struct rt_data_queue *queue)
421431
* In rt_thread_resume function, it will remove current thread from
422432
* suspend list
423433
*/
424-
rt_thread_resume(thread);
434+
if(rt_thread_resume(thread) == RT_EOK)
435+
need_schedule = RT_TRUE;
425436

426437
/* enable interrupt */
427438
rt_hw_interrupt_enable(level);
428439
}
429440
rt_exit_critical();
430441

431-
rt_schedule();
442+
if (need_schedule == RT_TRUE)
443+
rt_schedule();
432444
}
433445
RTM_EXPORT(rt_data_queue_reset);
434446

components/drivers/ipc/waitqueue.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ int __wqueue_default_wake(struct rt_wqueue_node *wait, void *key)
7575
void rt_wqueue_wakeup(rt_wqueue_t *queue, void *key)
7676
{
7777
rt_base_t level;
78-
int need_schedule = 0;
78+
rt_bool_t need_schedule = RT_FALSE;
7979

8080
rt_list_t *queue_list;
8181
struct rt_list_node *node;
@@ -94,8 +94,8 @@ void rt_wqueue_wakeup(rt_wqueue_t *queue, void *key)
9494
entry = rt_list_entry(node, struct rt_wqueue_node, list);
9595
if (entry->wakeup(entry, key) == 0)
9696
{
97-
rt_thread_resume(entry->polling_thread);
98-
need_schedule = 1;
97+
if(rt_thread_resume(entry->polling_thread) == RT_EOK)
98+
need_schedule = RT_TRUE;
9999

100100
rt_wqueue_remove(entry);
101101
break;
@@ -104,7 +104,7 @@ void rt_wqueue_wakeup(rt_wqueue_t *queue, void *key)
104104
}
105105
rt_hw_interrupt_enable(level);
106106

107-
if (need_schedule)
107+
if (need_schedule == RT_TRUE)
108108
rt_schedule();
109109
}
110110

components/drivers/ipc/workqueue.c

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ static rt_err_t _workqueue_submit_work(struct rt_workqueue *queue,
9393
struct rt_work *work, rt_tick_t ticks)
9494
{
9595
rt_base_t level;
96+
rt_bool_t need_schedule = RT_FALSE;
9697
rt_err_t err;
9798

9899
level = rt_hw_interrupt_disable();
@@ -119,9 +120,14 @@ static rt_err_t _workqueue_submit_work(struct rt_workqueue *queue,
119120
((queue->work_thread->stat & RT_THREAD_STAT_MASK) == RT_THREAD_SUSPEND))
120121
{
121122
/* resume work thread */
122-
rt_thread_resume(queue->work_thread);
123+
if(rt_thread_resume(queue->work_thread) == RT_EOK)
124+
need_schedule = RT_TRUE;
125+
123126
rt_hw_interrupt_enable(level);
124-
rt_schedule();
127+
128+
/* perform a schedule */
129+
if (need_schedule == RT_TRUE)
130+
rt_schedule();
125131
}
126132
else
127133
{
@@ -180,6 +186,7 @@ static void _delayed_work_timeout_handler(void *parameter)
180186
struct rt_work *work;
181187
struct rt_workqueue *queue;
182188
rt_base_t level;
189+
rt_bool_t need_schedule = RT_FALSE;
183190

184191
work = (struct rt_work *)parameter;
185192
queue = work->workqueue;
@@ -201,9 +208,14 @@ static void _delayed_work_timeout_handler(void *parameter)
201208
((queue->work_thread->stat & RT_THREAD_STAT_MASK) == RT_THREAD_SUSPEND))
202209
{
203210
/* resume work thread */
204-
rt_thread_resume(queue->work_thread);
211+
if(rt_thread_resume(queue->work_thread) == RT_EOK)
212+
need_schedule = RT_TRUE;
213+
205214
rt_hw_interrupt_enable(level);
206-
rt_schedule();
215+
216+
/* perform a schedule */
217+
if (need_schedule == RT_TRUE)
218+
rt_schedule();
207219
}
208220
else
209221
{
@@ -346,6 +358,7 @@ rt_err_t rt_workqueue_submit_work(struct rt_workqueue *queue, struct rt_work *wo
346358
rt_err_t rt_workqueue_urgent_work(struct rt_workqueue *queue, struct rt_work *work)
347359
{
348360
rt_base_t level;
361+
rt_bool_t need_schedule = RT_FALSE;
349362

350363
RT_ASSERT(queue != RT_NULL);
351364
RT_ASSERT(work != RT_NULL);
@@ -359,9 +372,14 @@ rt_err_t rt_workqueue_urgent_work(struct rt_workqueue *queue, struct rt_work *wo
359372
((queue->work_thread->stat & RT_THREAD_STAT_MASK) == RT_THREAD_SUSPEND))
360373
{
361374
/* resume work thread */
362-
rt_thread_resume(queue->work_thread);
375+
if(rt_thread_resume(queue->work_thread) == RT_EOK)
376+
need_schedule = RT_TRUE;
377+
363378
rt_hw_interrupt_enable(level);
364-
rt_schedule();
379+
380+
/* perform a schedule */
381+
if (need_schedule == RT_TRUE)
382+
rt_schedule();
365383
}
366384
else
367385
{

components/vbus/prio_queue.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ rt_err_t rt_prio_queue_push(struct rt_prio_queue *que,
137137
rt_int32_t timeout)
138138
{
139139
rt_base_t level;
140+
rt_bool_t need_schedule = RT_FALSE;
140141
struct rt_prio_queue_item *item;
141142

142143
RT_ASSERT(que);
@@ -164,11 +165,14 @@ rt_err_t rt_prio_queue_push(struct rt_prio_queue *que,
164165
struct rt_thread,
165166
tlist);
166167
/* resume it */
167-
rt_thread_resume(thread);
168+
if(rt_thread_resume(thread) == RT_EOK)
169+
need_schedule = RT_TRUE;
170+
168171
rt_hw_interrupt_enable(level);
169172

170173
/* perform a schedule */
171-
rt_schedule();
174+
if (need_schedule == RT_TRUE)
175+
rt_schedule();
172176

173177
return RT_EOK;
174178
}

components/vbus/vbus.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,8 +288,8 @@ static void _bus_out_entry(void *param)
288288

289289
void rt_vbus_resume_out_thread(void)
290290
{
291-
rt_thread_resume(&_bus_out_thread);
292-
rt_schedule();
291+
if(rt_thread_resume(&_bus_out_thread) == RT_EOK)
292+
rt_schedule();
293293
}
294294

295295
rt_err_t rt_vbus_post(rt_uint8_t id,

components/vbus/watermark_queue.h

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ rt_inline rt_err_t rt_wm_que_inc(struct rt_watermark_queue *wg,
100100
*/
101101
rt_inline void rt_wm_que_dec(struct rt_watermark_queue *wg)
102102
{
103-
int need_sched = 0;
103+
rt_bool_t need_schedule = RT_FALSE;
104+
104105
rt_base_t level;
105106

106107
if (wg->level == 0)
@@ -119,12 +120,14 @@ rt_inline void rt_wm_que_dec(struct rt_watermark_queue *wg)
119120
thread = rt_list_entry(wg->suspended_threads.next,
120121
struct rt_thread,
121122
tlist);
122-
rt_thread_resume(thread);
123-
need_sched = 1;
123+
/* resume it */
124+
if(rt_thread_resume(thread) == RT_EOK)
125+
need_schedule = RT_TRUE;
124126
}
125127
}
126128
rt_hw_interrupt_enable(level);
127129

128-
if (need_sched)
130+
/* perform a schedule */
131+
if (need_schedule == RT_TRUE)
129132
rt_schedule();
130133
}

0 commit comments

Comments
 (0)