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