| 1135 | |
| 1136 | |
| 1137 | void utimer_routine(utime_t uticks , void *set) |
| 1138 | { |
| 1139 | struct timer_link *tl, *tmp_tl; |
| 1140 | struct timespec begin; |
| 1141 | int id; |
| 1142 | |
| 1143 | clock_gettime(CLOCK_REALTIME, &begin); |
| 1144 | |
| 1145 | lock_get( timertable[(long)set].ex_lock ); |
| 1146 | |
| 1147 | for( id=RT_T1_TO_1 ; id<NR_OF_TIMER_LISTS ; id++ ) |
| 1148 | { |
| 1149 | /* to waste as little time in lock as possible, detach list |
| 1150 | with expired items and process them after leaving the lock */ |
| 1151 | tl=check_and_split_time_list( &timertable[(long)set].timers[ id ], uticks); |
| 1152 | /* process items now */ |
| 1153 | switch (id) |
| 1154 | { |
| 1155 | case RT_T1_TO_1: |
| 1156 | case RT_T1_TO_2: |
| 1157 | case RT_T1_TO_3: |
| 1158 | case RT_T2: |
| 1159 | run_handler_for_each(tl,retransmission_handler); |
| 1160 | break; |
| 1161 | } |
| 1162 | } |
| 1163 | lock_release( timertable[(long)set].ex_lock ); |
| 1164 | |
| 1165 | clock_check_diff((double)TM_UTIMER_ITV_US*1000 * TM_TIMER_LOAD_WARN, |
| 1166 | "now at %d%%+ capacity, inuse_transactions: %lu", (int)(TM_TIMER_LOAD_WARN*100), |
| 1167 | (unsigned long)get_stat_val(tm_trans_inuse)); |
| 1168 | } |
| 1169 |
nothing calls this directly
no test coverage detected