Line# | Code |
1 | //--- process.c\exit_process:123-172 |
2 | proctype exit_process(chan exit_process_sync_ch;chan params_chan) |
3 | { chan ret_chan = [0] of {int}; |
4 | int p, fromProcess; params_chan ? p,fromProcess; // Receiving parameters |
5 | mtype: ptResult ptRes; mtype:process_data_t data; int q, result; |
6 | int old_current = process_current; |
7 | q = process_list; //- Begin of process.c\exit_process:133 |
8 | do :: (q != NULL && q != p) -> q = processes[q].next; |
9 | :: else -> break; od;//- End of process.c\exit_process:133 |
10 | if //process.c\exit_process:134-136 |
11 | :: (q == NULL ) -> goto end; |
12 | :: else -> skip; |
13 | fi;//End of process.c\exit_process:134-136 |
14 | process_is_running_params_chan ! p; |
15 | run process_is_running(ret_chan,process_is_running_params_chan); |
16 | ret_chan ? result; |
17 | if |
18 | :: ( result) -> processes[p].state = PROCESS_STATE_NONE; |
19 | q = process_list;//process.c\exit_process:147-151 |
20 | do |
21 | :: (q != NULL) -> |
22 | if |
23 | :: ( q != p) -> |
24 | call_process_params_chan ! q , PROCESS_EVENT_EXITED , p ; |
25 | run call_process( ret_chan, call_process_params_chan ); |
26 | ret_chan ? result; |
27 | fi; q = processes[q].next; |
28 | :: else -> break; |
29 | od//End of process.c\exit_process:147-151 |
30 | if //process.c\exit_process:153-157 |
31 | :: ( p != fromProcess ) -> process_current = p; |
32 | pThread_params_chan ! processes[p].thread,PROCESS_EVENT_EXIT , data ; |
33 | pThread_sync_chan ? eval(processes[p].thread),ptRes; |
34 | :: else -> skip; |
35 | fi //End of process.c\exit_process:153-157 |
36 | :: else -> skip; |
37 | fi; |
38 | if //process.c\exit_process:160-169 |
39 | :: ( p == process_list) -> process_list = processes[process_list].next; |
40 | :: else -> q = process_list; //process.c\exit_process:163-168 |
41 | do |
42 | :: (q != NULL) -> |
43 | if //process.c\exit_process:164-167 |
44 | :: ( processes[q].next == p ) -> processes[q].next = processes[p].next; |
45 | break; |
46 | fi ;//process.c\exit_process:164-167 |
47 | q = processes[q].next; |
48 | :: else -> break; |
49 | od //End of process.c\exit_process:163-168 |
50 | fi; //End of process.c\exit_process:160-169 |
51 | process_current = old_current ; |
52 | end:exit_process_sync_ch ! 0; |
53 | }//--- End of process.c\exit_process:123-172 |
exit_process() proctype
×
https://people.iut.ac.ir/en/mahmoudzadeh/exitprocess-proctype?view=qrcode