@@ -88,7 +88,7 @@ struct E_flow_Q_report_Z
8888struct E_flow_Q_timer_Z
8989{ Z_clock_time left ;
9090 Z_clock_time period ;
91- N lost_count ;
91+ N reported_count ;
9292 N uid ;
9393 I task_to ;
9494};
@@ -1534,7 +1534,7 @@ E_flow_Q_report_I_signal( I id
15341534_export
15351535B
15361536E_flow_Q_report_I_wait ( I id
1537- , N * lost_count
1537+ , N * reported_count
15381538){ B r ;
15391539 struct E_flow_Q_report_Z * report = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_report_S , id );
15401540 if ( report -> reported_count )
@@ -1557,8 +1557,8 @@ E_flow_Q_report_I_wait( I id
15571557 r = E_flow_Q_task_I_schedule ();
15581558 report = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_report_S , id );
15591559 }
1560- if ( lost_count )
1561- * lost_count = report -> reported_count - 1 ;
1560+ if ( reported_count )
1561+ * reported_count = report -> reported_count ;
15621562 report -> reported_count = 0 ;
15631563 return r ;
15641564}
@@ -1583,21 +1583,19 @@ E_flow_Q_timer_M( N period
15831583 #ifdef E_flow_drv_C_clock_monotonic
15841584 timer -> period .Z_clock_time_minor_field *= 1000 ;
15851585 #endif
1586- timer -> lost_count = 0 ;
1586+ timer -> reported_count = 0 ;
15871587 timer -> uid = ~0 ;
15881588 timer -> task_to = E_base_S -> E_flow_Q_task_S_current ;
1589- if ( E_mem_Q_tab_R_n ( E_base_S -> E_flow_Q_timer_S ) != 1 )
1590- { for_each_out ( timer_id , timer_id_ , E_base_S -> E_flow_Q_timer_S , E_mem_Q_tab )
1591- { struct E_flow_Q_timer_Z * timer_ = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_timer_S , timer_id_ );
1592- if ( _timerisset ( & timer_ -> period ) // Jest co najmniej jeden ‹cykler›
1593- || _timerisset ( & timer_ -> left ) // lub co najmniej jeden wzbudzony ‹impulsator›.
1594- )
1595- { _timeradd ( & tv , & timer -> period , & tv );
1596- if ( _timercmp ( & tv , < , & E_base_S -> E_flow_Q_timer_S_next_real_time ))
1597- E_base_S -> E_flow_Q_timer_S_next_real_time = tv ;
1598- _timersub ( & tv , & E_base_S -> E_flow_Q_timer_S_last_real_time , & timer -> left );
1599- return timer_id ;
1600- }
1589+ for_each_out ( timer_id , timer_id_ , E_base_S -> E_flow_Q_timer_S , E_mem_Q_tab )
1590+ { struct E_flow_Q_timer_Z * timer_ = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_timer_S , timer_id_ );
1591+ if ( _timerisset ( & timer_ -> period ) // Jest co najmniej jeden ‹cykler›
1592+ || _timerisset ( & timer_ -> left ) // lub co najmniej jeden wzbudzony ‹impulsator›.
1593+ )
1594+ { _timeradd ( & tv , & timer -> period , & tv );
1595+ if ( _timercmp ( & tv , < , & E_base_S -> E_flow_Q_timer_S_next_real_time ))
1596+ E_base_S -> E_flow_Q_timer_S_next_real_time = tv ;
1597+ _timersub ( & tv , & E_base_S -> E_flow_Q_timer_S_last_real_time , & timer -> left );
1598+ return timer_id ;
16011599 }
16021600 }
16031601 E_base_S -> E_flow_Q_timer_S_last_real_time = tv ;
@@ -1625,15 +1623,15 @@ E_flow_Q_timer_W( I id
16251623_export
16261624B
16271625E_flow_Q_timer_I_wait ( I id
1628- , N * lost_count
1626+ , N * reported_count
16291627){ struct E_flow_Q_task_Z * task = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_task_S , E_base_S -> E_flow_Q_task_S_current );
16301628 task -> run_state = E_flow_Z_run_state_S_waiting_for_timer ;
16311629 task -> run_state_object = id ;
16321630 B r = E_flow_Q_task_I_schedule ();
16331631 struct E_flow_Q_timer_Z * timer = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_timer_S , id );
1634- if ( lost_count )
1635- * lost_count = timer -> lost_count ;
1636- timer -> lost_count = 0 ;
1632+ if ( reported_count )
1633+ * reported_count = timer -> reported_count ;
1634+ timer -> reported_count = 0 ;
16371635 return r ;
16381636}
16391637//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -1693,18 +1691,16 @@ E_flow_Q_impulser_I_activate( I id
16931691 #ifdef E_flow_drv_C_clock_monotonic
16941692 timer -> left .Z_clock_time_minor_field *= 1000 ;
16951693 #endif
1696- if ( E_mem_Q_tab_R_n ( E_base_S -> E_flow_Q_timer_S ) != 1 )
1697- { for_each_out ( id , timer_id_ , E_base_S -> E_flow_Q_timer_S , E_mem_Q_tab )
1698- { struct E_flow_Q_timer_Z * timer_ = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_timer_S , timer_id_ );
1699- if ( _timerisset ( & timer_ -> period )
1700- || _timerisset ( & timer_ -> left )
1701- )
1702- { _timeradd ( & tv , & timer -> left , & tv );
1703- if ( _timercmp ( & tv , < , & E_base_S -> E_flow_Q_timer_S_next_real_time ))
1704- E_base_S -> E_flow_Q_timer_S_next_real_time = tv ;
1705- _timersub ( & tv , & E_base_S -> E_flow_Q_timer_S_last_real_time , & timer -> left );
1706- return ;
1707- }
1694+ for_each_out ( id , timer_id_ , E_base_S -> E_flow_Q_timer_S , E_mem_Q_tab )
1695+ { struct E_flow_Q_timer_Z * timer_ = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_timer_S , timer_id_ );
1696+ if ( _timerisset ( & timer_ -> period )
1697+ || _timerisset ( & timer_ -> left )
1698+ )
1699+ { _timeradd ( & tv , & timer -> left , & tv );
1700+ if ( _timercmp ( & tv , < , & E_base_S -> E_flow_Q_timer_S_next_real_time ))
1701+ E_base_S -> E_flow_Q_timer_S_next_real_time = tv ;
1702+ _timersub ( & tv , & E_base_S -> E_flow_Q_timer_S_last_real_time , & timer -> left );
1703+ return ;
17081704 }
17091705 }
17101706 E_base_S -> E_flow_Q_timer_S_last_real_time = tv ;
@@ -1917,33 +1913,33 @@ Loop:
19171913 _timerover ( & suspend_time );
19181914 for_each ( timer_id , E_base_S -> E_flow_Q_timer_S , E_mem_Q_tab )
19191915 { struct E_flow_Q_timer_Z * timer = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_timer_S , timer_id );
1920- if ( _timerisset ( & timer -> period )) // ‹cykler›.
1921- { if ( !_timercmp ( & elapsed_time , < , & timer -> left )) // ‹cykler › wykonał obieg— ‹zadanie› do wznowienia.
1916+ if ( _timerisset ( & timer -> period )) // ‹cykler›
1917+ { if ( !_timercmp ( & elapsed_time , < , & timer -> left )) // ‹Cykler › wykonał obieg— ‹zadanie› do wznowienia.
19221918 { Z_clock_time overlate_time ;
19231919 _timersub ( & elapsed_time , & timer -> left , & overlate_time );
1924- if ( !_timercmp ( & overlate_time , < , & timer -> period )) // ‹cykler › wykonał więcej niż jeden obieg.
1920+ if ( !_timercmp ( & overlate_time , < , & timer -> period )) // ‹Cykler › wykonał więcej niż jeden obieg.
19251921 { do
1926- { timer -> lost_count ++ ;
1922+ { timer -> reported_count ++ ;
19271923 _timersub ( & overlate_time , & timer -> period , & overlate_time );
19281924 }while ( !_timercmp ( & overlate_time , < , & timer -> period ));
1929- GV_ (NA ); Gd ( timer -> lost_count ); Gd ( timer -> period .tv_sec ); Gd ( timer -> period .Z_clock_time_minor_field ); Gd ( overlate_time .tv_sec ); Gd ( overlate_time .Z_clock_time_minor_field ); // lost time.
1930- }
1925+ GV_ (NA ); Gd ( timer -> reported_count ); Gd ( timer -> period .tv_sec ); Gd ( timer -> period .Z_clock_time_minor_field ); Gd ( overlate_time .tv_sec ); Gd ( overlate_time .Z_clock_time_minor_field ); // lost time
1926+ }else
1927+ timer -> reported_count ++ ;
19311928 _timersub ( & timer -> period , & overlate_time , & timer -> left );
19321929 struct E_flow_Q_task_Z * task = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_task_S , timer -> task_to );
19331930 if ( task -> run_state == E_flow_Z_run_state_S_waiting_for_timer
19341931 && task -> run_state_object == timer_id
19351932 )
19361933 { task -> run_state = E_flow_Z_run_state_S_ready ;
19371934 some_task_got_ready = yes ;
1938- }else
1939- timer -> lost_count ++ ;
1935+ }
19401936 }else
19411937 _timersub ( & timer -> left , & elapsed_time , & timer -> left );
19421938 if ( _timercmp ( & timer -> left , < , & suspend_time ))
19431939 { suspend_time = timer -> left ;
19441940 some_timer_is_active = yes ;
19451941 }
1946- }else if ( _timerisset ( & timer -> left )) // Aktywowany ‹impulsator›.
1942+ }else if ( _timerisset ( & timer -> left )) // aktywowany ‹impulsator›
19471943 { if ( !_timercmp ( & elapsed_time , < , & timer -> left ))
19481944 { _timerclear ( & timer -> left );
19491945 struct E_flow_Q_task_Z * task = E_mem_Q_tab_R ( E_base_S -> E_flow_Q_task_S , timer -> task_to );
0 commit comments