Просмотр исходного кода

ncd: NCDInterpreter: don't schedule the work job in PSTATE_WAITING

ambrop7 13 лет назад
Родитель
Сommit
751f15e469
1 измененных файлов с 4 добавлено и 5 удалено
  1. 4 5
      ncd/NCDInterpreter.c

+ 4 - 5
ncd/NCDInterpreter.c

@@ -608,13 +608,10 @@ void process_work_job_handler (struct process *p)
     process_assert_pointers(p);
     ASSERT(!BSmallTimer_IsRunning(&p->wait_timer))
     ASSERT(p->state != PSTATE_TERMINATING)
+    ASSERT(p->state != PSTATE_WAITING)
     
     int pstate = p->state;
     
-    if (pstate == PSTATE_WAITING) {
-        return;
-    }
-    
     // process was up but is no longer?
     if (pstate == PSTATE_UP && !(!process_have_child(p) && p->ap == p->num_statements)) {
         // if we have module process, wait for its permission to continue
@@ -1033,7 +1030,9 @@ void statement_instance_func_event (NCDModuleInst *inst, int event)
     process_assert_pointers(p);
     
     // schedule work
-    process_schedule_work(p);
+    if (p->state != PSTATE_WAITING) {
+        process_schedule_work(p);
+    }
     
     switch (event) {
         case NCDMODULE_EVENT_UP: {