call_process() source code

call_process() source code based on Contiki's source code 

Line# Code
174 static void
175 call_process(struct process *p, process_event_t ev, process_data_t data)
176 {
177    int ret;
178  
179    #if DEBUG
180    if(p->state == PROCESS_STATE_CALLED) {
181         printf("process: process '%s' called again with event %d\n", PROCESS_NAME_STRING(p), ev);
182     }
183    #endif /* DEBUG */
184  
185    if((p->state & PROCESS_STATE_RUNNING) &&
186           p->thread != NULL) {
187        PRINTF("process: calling process '%s' with event %d\n", PROCESS_NAME_STRING(p), ev);
188        process_current = p;
189        p->state = PROCESS_STATE_CALLED;
190        ret = p->thread(&p->pt, ev, data);
191        if(ret == PT_EXITED ||
192            ret == PT_ENDED ||
193           ev == PROCESS_EVENT_EXIT) {
194              exit_process(p, p);
195        } else {
196              p->state = PROCESS_STATE_RUNNING;
197         }
198    }
199 }
https://people.iut.ac.ir/en/mahmoudzadeh/callprocess-source-code