@@ -67,6 +67,7 @@ unsigned long long _st_stat_sched_s = 0; |
|
|
67 |
67 |
unsigned long long _st_stat_thread_run = 0; |
68 |
68 |
unsigned long long _st_stat_thread_idle = 0; |
69 |
69 |
unsigned long long _st_stat_thread_yield = 0; |
|
70 |
+unsigned long long _st_stat_thread_yield2 = 0; |
70 |
71 |
#endif |
71 |
72 |
|
72 |
73 |
|
@@ -559,18 +560,22 @@ void st_thread_yield() |
|
|
559 |
560 |
{ |
560 |
561 |
_st_thread_t *me = _ST_CURRENT_THREAD(); |
561 |
562 |
|
|
563 |
+#ifdef DEBUG |
|
564 |
+++_st_stat_thread_yield; |
|
565 |
+#endif |
|
566 |
+ |
|
567 |
+/* Check sleep queue for expired threads */ |
|
568 |
+_st_vp_check_clock(); |
|
569 |
+ |
562 |
570 |
// If not thread in RunQ to yield to, ignore and continue to run. |
563 |
571 |
if (_ST_RUNQ.next == &_ST_RUNQ) { |
564 |
572 |
return; |
565 |
573 |
} |
566 |
574 |
|
567 |
575 |
#ifdef DEBUG |
568 |
|
-++_st_stat_thread_yield; |
|
576 |
+++_st_stat_thread_yield2; |
569 |
577 |
#endif |
570 |
578 |
|
571 |
|
-/* Check sleep queue for expired threads */ |
572 |
|
-_st_vp_check_clock(); |
573 |
|
- |
574 |
579 |
// Append thread to the tail of RunQ, we will back after all threads executed. |
575 |
580 |
me->state = _ST_ST_RUNNABLE; |
576 |
581 |
_ST_ADD_RUNQ(me); |