On Thu, Jul 25, 2013 at 2:38 PM, Jan Kiszka <jan.kis...@siemens.com> wrote: > On 2013-07-25 14:35, Paolo Bonzini wrote: >> Il 25/07/2013 14:32, Jan Kiszka ha scritto: >>> On 2013-07-25 14:21, Alex Bligh wrote: >>>> >>>> >>>> --On 25 July 2013 14:05:30 +0200 Stefan Hajnoczi <stefa...@gmail.com> >>>> wrote: >>>> >>>>> Alex Bligh's series gives each AioContext its own rt_clock. This avoids >>>>> the need for synchronization in the simple case. If we require timer >>>>> access between threads then we really need to synchronize. >>>>> >>>>> You pointed out in another email that vm_clock stops when the guest is >>>>> paused. I think we can find a solution for I/O throttling and QED, >>>>> which use vm_clock in the block layer. Note that block jobs already use >>>>> rt_clock. >>>> >>>> I would happily at a QEMUClock of each type to AioContext. They are after >>>> all pretty lightweight. >>> >>> What's the point of adding tones of QEMUClock instances? Considering >>> proper abstraction, how are they different for each AioContext? Will >>> they run against different clock sources, start/stop at different times? >>> If the answer is "they have different timer list", then fix this >>> incorrect abstraction. >> >> s/QEMUClock/QEMUTimerList/ ? :) > > What do you mean? If the content of struct QEMUClock remained the same, > that would just paper over a design mistake.
QEMUClock really isn't much more than a reference to a clock source, an enabled/disabled flag, and a timer list. The point of having one QEMUClock per AioContext is to allow each thread's event loop to have its own timers, without synchronization. What is the design mistake? I only see poor naming. Stefan