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 | } |