| 173 | } |
| 174 | |
| 175 | void KTimer::setTimes(U64 microInterval, U64 microNextTimer) { |
| 176 | BOXEDWINE_CRITICAL_SECTION_WITH_CONDITION(waitCond); |
| 177 | this->microInterval = microInterval; |
| 178 | this->microNextTimer = microNextTimer; |
| 179 | removeTimer(&timer); |
| 180 | U64 now = KSystem::getSystemTimeAsMicroSeconds(); |
| 181 | S64 diff = microNextTimer - now; |
| 182 | if (diff < 0) { |
| 183 | numberOfExpirations++; |
| 184 | if (microInterval) { |
| 185 | microNextTimer = now + microInterval; |
| 186 | timer.millies = (U32)(microInterval / 1000) + KSystem::getMilliesSinceStart(); |
| 187 | addTimer(&timer); |
| 188 | } |
| 189 | } else { |
| 190 | timer.millies = (U32)(diff / 1000) + KSystem::getMilliesSinceStart(); |
| 191 | addTimer(&timer); |
| 192 | } |
| 193 | } |
no test coverage detected