| 52 | } |
| 53 | |
| 54 | void timers_init(struct timers *timers, struct timemono start) |
| 55 | { |
| 56 | unsigned int i; |
| 57 | |
| 58 | list_head_init(&timers->far); |
| 59 | timers->base = time_to_grains(start); |
| 60 | timers->first = -1ULL; |
| 61 | memset(timers->firsts, 0xFF, sizeof(timers->firsts)); |
| 62 | for (i = 0; i < ARRAY_SIZE(timers->level); i++) |
| 63 | timers->level[i] = NULL; |
| 64 | } |
| 65 | |
| 66 | static unsigned int level_of(const struct timers *timers, uint64_t time) |
| 67 | { |