- struct list_head *h;
-
- if (timers->first < timers->base) {
- base = timers->base;
- level = 0;
- } else {
- /* May not be accurate, due to timer_del / expiry. */
- level = level_of(timers, timers->first);
- base = timers->first >> (TIMER_LEVEL_BITS * level);
- }
-
-next:
- if (!timers->level[level])
- return find_first(&timers->far, NULL);
-
- need_next = false;
- off = base % PER_LEVEL;
- for (i = 0; i < PER_LEVEL; i++) {
- h = &timers->level[level]->list[(i+off) % PER_LEVEL];
-
- if (!list_empty(h))
- break;