Messages in this thread | | | Subject | Re: [patch 00/21] hrtimer - High-resolution timer subsystem | From | Thomas Gleixner <> | Date | Mon, 12 Dec 2005 19:37:53 +0100 |
| |
> On Mon, 2005-12-12 at 14:39 +0100, Roman Zippel wrote: > > > Actually the change adds more code lines and removes one field of the > > > hrtimer structure, but it has exactly the same functionality: Fast > > > access to the first expiring timer without walking the rb_tree. > > > > Together with the state field this would save 12 bytes, which is IMO very > > well worth considering. > > You seem to have some plans for it, the best hint I've found for it is: > > > > + (This seperate list is also useful for high-resolution timers where we > > + need seperate pending and expired queues while keeping the time-order > > + intact.)" > > > > Could you please elaborate on this? > > Sure. I have already removed the list_head for the non high resolution > case as it turned out that it does not hurt the high resolution > implementation. > > For the high resolution implementation we have to move the expired > timers to a seperate list, as we do not want to do complex callback > functions from the event interrupt itself. But we have to reprogramm the > next event interrupt, so we need simple access to the timer which > expires first. > > The initial implementation did simply move the timer from the pending > list to the expired list without doing the rb_tree removal inside of the > event interrupt handler. That way the next event for reprogramming was > the first event in the pending list. > > The new rebased version with the pending list removed does the rb_tree > removal inside the event interrupt and enqueues the timer, for which the > callback function has to be executed in the softirq, to the expired > list. One exception are simple wakeup callback functions, as they are > reasonably fast and we save two context switches. The next event for > reprogramming the event interrupt is retrieved by the pointer in the > base structure. > > This way the list head is only necessary for the high resolution case. > > The state field is not removed
Oops, I somehow managed to remove the rest of this paragraph :(
The state field is not removed because I'm not a big fan of those overloaded fields and I prefer to pay the 4 byte penalty for the seperation. Of course if there is the absolute requirement to reduce the size, I'm not insisting on keeping it.
tglx
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |