[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 2/3] qemu-timer: make qemu_timer_mod_ns() and
From: |
Alex Bligh |
Subject: |
Re: [Qemu-devel] [PATCH v4 2/3] qemu-timer: make qemu_timer_mod_ns() and qemu_timer_del() thread-safe |
Date: |
Mon, 30 Sep 2013 13:55:21 +0100 |
On 30 Sep 2013, at 13:45, Mike Day wrote:
> I've applied this set to Paolo's rcu tree - I see a couple of routines
> that appear to need the active_timers_lock:
>
> (line 137 of qemu-timer.c in my tree)
> void qemu_clock_notify(QEMUClockType type)
> {
> QEMUTimerList *timer_list;
> QEMUClock *clock = qemu_clock_ptr(type);
> QLIST_FOREACH(timer_list, &clock->timerlists, list) {
> timerlist_notify(timer_list);
> }
> }
>
> (line 228 of qemu-timer.c in my tree)
> int64_t qemu_clock_deadline_ns_all(QEMUClockType type)
> {
> int64_t deadline = -1;
> QEMUTimerList *timer_list;
> QEMUClock *clock = qemu_clock_ptr(type);
> QLIST_FOREACH(timer_list, &clock->timerlists, list) {
> deadline = qemu_soonest_timeout(deadline,
> timerlist_deadline_ns(timer_list));
> }
> return deadline;
> }
>
> I think these functions are always called now with the BQL held, so I
> wonder if they are good candidates for RCU?
These routines iterate through the list of timerlists held by
a clock.
They do not iterate through the list of active timers in a timer
list. I believe the latter is what active_timers_lock protects.
The list of timers attached to a clock is only modified when timers
are created and deleted which is (currently) under the BQL.
--
Alex Bligh
[Qemu-devel] [PATCH v4 1/3] qemu-timer: drop outdated signal safety comments, Stefan Hajnoczi, 2013/09/12
[Qemu-devel] [PATCH v4 3/3] qemu-timer: do not take the lock in timer_pending, Stefan Hajnoczi, 2013/09/12
Re: [Qemu-devel] [PATCH v4 0/3] qemu-timer: make qemu_timer_mod_ns() and qemu_timer_del() thread-safe, Stefan Hajnoczi, 2013/09/18