do_event() proctype

Line# Code
1 //--- process.c\do_event:245-299
2 proctype do_event(chan do_event_sync_ch)
3 {   chan ret_chan = [0] of {int};
4      mtype: process_event_t ev; mtype: process_data_t data;
5      int receiver, p, tmp;
6      if //process.c\do_event:261-298
7      ::(nevents > 0) -> ev = events[fevent].ev;
8                 data = events[fevent].data; receiver = events[fevent].p;
9                 fevent = (fevent + 1) % PROCESS_CONF_NUMEVENTS;
10                 nevents = nevents - 1;
11                 if //-- Begin of process.c\do_event:276 - 297
12                 ::(receiver == PROCESS_BROADCAST) ->
13                         p = process_list; //- Begin of process.c\do_event:277 - 285
14                        do
15                         :: (p != NULL) -> //process.c\do_event:277
16                                if
17                                :: ( poll_requested == True ) ->
18                                       run do_poll( ret_chan); //-Begin of process.c\do_event:282
19                                       ret_chan ? tmp; //- End of process.c\do_event:282
20                              :: else -> skip;
21                              fi;
22                             call_process_params_chan ! p , ev , data ; //Begin of process.c\do_event:284
23                             run call_process( ret_chan,call_process_params_chan );
24                             ret_chan ? tmp; //End of process.c\do_event:284
25                             p = processes[p].next;
26                       :: else-> break;
27                       od//- End of process.c\do_event:277 - 285
28                 ::else ->
29                           if :: ( ev == PROCESS_EVENT_INIT ) ->
30                             processes[receiver ].state == PROCESS_STATE_RUNNING;
31                           :: else -> skip;
32                           fi;
33                            call_process_params_chan ! receiver , ev , data;//Begin of process.c\do_event:296
34                           run call_process( ret_chan,call_process_params_chan);
35                           ret_chan ? tmp;//End of process.c\do_event:296
36                   fi;//-- End of process.c\do_event:276 - 297
37        ::else -> goto end;
38         fi; //process.c\do_event:261-298
39         end : do_event_sync_ch ! 0;
40 }//---End of process.c\do_event:245-299
https://people.iut.ac.ir/en/mahmoudzadeh/doevent-proctype