From: Arjan van de Ven <arjan@infradead.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Andrew Morton <akpm@osdl.org>,
LKML <linux-kernel@vger.kernel.org>, Ingo Molnar <mingo@elte.hu>,
Len Brown <lenb@kernel.org>, John Stultz <johnstul@us.ibm.com>,
Andi Kleen <ak@suse.de>, Roman Zippel <zippel@linux-m68k.org>
Subject: Re: [patch 01/19] hrtimers: state tracking
Date: Fri, 10 Nov 2006 10:19:48 +0100 [thread overview]
Message-ID: <1163150389.3138.608.camel@laptopd505.fenrus.org> (raw)
In-Reply-To: <20061109233034.182462000@cruncher.tec.linutronix.de>
> +/*
> + * Bit values to track state of the timer
> + *
> + * Possible states:
> + *
> + * 0x00 inactive
> + * 0x01 enqueued into rbtree
> + * 0x02 callback function running
> + * 0x03 callback function running and enqueued
> + * (was requeued on another CPU)
> + *
> + * The "callback function running and enqueued" status is only possible on
> + * SMP. It happens for example when a posix timer expired and the callback
> + * queued a signal. Between dropping the lock which protects the posix timer
> + * and reacquiring the base lock of the hrtimer, another CPU can deliver the
> + * signal and rearm the timer. We have to preserve the callback running state,
> + * as otherwise the timer could be removed before the softirq code finishes the
> + * the handling of the timer.
> + *
> + * The HRTIMER_STATE_ENQUEUE bit is always or'ed to the current state to
> + * preserve the HRTIMER_STATE_CALLBACK bit in the above scenario.
> + *
> + * All state transitions are protected by cpu_base->lock.
> + */
> +#define HRTIMER_STATE_INACTIVE 0x00
> +#define HRTIMER_STATE_ENQUEUED 0x01
> +#define HRTIMER_STATE_CALLBACK 0x02
where is the define for 0x03?
>
> +static inline int hrtimer_is_queued(struct hrtimer *timer)
> +{
> + return timer->state != HRTIMER_STATE_INACTIVE &&
> + timer->state != HRTIMER_STATE_CALLBACK;
> +}
the state things are either bits or they're not. If they're bits, you
probably want to make this a bitcheck instead...
> rb_insert_color(&timer->node, &base->active);
> + /*
> + * HRTIMER_STATE_ENQUEUED is or'ed to the current state to preserve the
> + * state of a possibly running callback.
> + */
> + timer->state |= HRTIMER_STATE_ENQUEUED;
ok so it IS a bit thing, see comment about hrtimer_is_queued() not being
a bit check then...
> - if (base->cpu_base->curr_timer != timer)
> + if (!(timer->state & HRTIMER_STATE_CALLBACK))
> ret = remove_hrtimer(timer, base);
if there is a hrtimer_is_queued() inline, might as well make a
hrtimer_is_running() inline as well
otherwise lookes ok; if you fix these few comments:
Acked-by: Arjan van de Ven <arjan@linux.intel.com>
--
if you want to mail me at work (you don't), use arjan (at) linux.intel.com
Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org
next prev parent reply other threads:[~2006-11-10 9:20 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-09 23:38 [patch 00/21] Highres / dynticks drop in replacement for 2.6.19-rc5-mm1 Thomas Gleixner
2006-11-09 23:38 ` [patch 01/19] hrtimers: state tracking Thomas Gleixner
2006-11-10 9:19 ` Arjan van de Ven [this message]
2006-11-10 9:40 ` Andrew Morton
2006-11-10 9:45 ` Thomas Gleixner
2006-11-23 22:26 ` Roman Zippel
2006-11-09 23:38 ` [patch 02/19] hrtimers: clean up callback tracking Thomas Gleixner
2006-11-10 9:20 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 03/19] hrtimers: Move and add documentation Thomas Gleixner
2006-11-09 23:38 ` [patch 04/19] Add a framework to manage clock event devices Thomas Gleixner
2006-11-10 9:47 ` Arjan van de Ven
2006-11-23 22:36 ` Roman Zippel
2006-11-09 23:38 ` [patch 05/19] ACPI: Include apic.h Thomas Gleixner
2006-11-09 23:38 ` [patch 06/19] ACPI: Keep track of timer broadcast Thomas Gleixner
2006-11-10 9:51 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 07/19] ACPI: Add state propagation for dynamic broadcasting Thomas Gleixner
2006-11-10 9:52 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 08/19] i386: cleanup apic code Thomas Gleixner
2006-11-10 10:04 ` Arjan van de Ven
2006-11-10 10:16 ` Thomas Gleixner
2006-11-10 10:16 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 09/19] i386: Convert to clock event devices Thomas Gleixner
2006-11-10 10:10 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 10/19] PM_timer: allow early access and move externs to a header file Thomas Gleixner
2006-11-10 10:12 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 11/19] i386: Rework local APIC calibration Thomas Gleixner
2006-11-10 10:17 ` Arjan van de Ven
2006-11-10 10:23 ` Thomas Gleixner
2006-11-10 11:10 ` Ingo Molnar
2006-11-09 23:38 ` [patch 12/19] high-res timers: core Thomas Gleixner
2006-11-10 10:26 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 13/19] GTOD: Mark TSC unusable for highres timers Thomas Gleixner
2006-11-10 1:10 ` john stultz
2006-11-10 5:10 ` Andi Kleen
2006-11-10 8:10 ` Thomas Gleixner
2006-11-10 8:50 ` Andrew Morton
2006-11-10 8:57 ` Ingo Molnar
2006-11-10 9:13 ` Andrew Morton
2006-11-10 9:29 ` Andi Kleen
2006-11-11 11:14 ` Thomas Gleixner
2006-11-11 13:51 ` Andi Kleen
2006-11-11 13:58 ` Thomas Gleixner
2006-11-11 13:59 ` Andi Kleen
2006-11-11 14:08 ` Thomas Gleixner
2006-11-10 10:35 ` Arjan van de Ven
2006-11-10 10:47 ` Andi Kleen
2006-11-10 10:55 ` Arjan van de Ven
2006-11-10 11:13 ` Ingo Molnar
2006-11-10 11:28 ` Andi Kleen
2006-11-10 9:27 ` Andi Kleen
2006-11-10 10:14 ` Alan Cox
2006-11-10 11:19 ` Ingo Molnar
2006-11-10 15:43 ` Chris Friesen
2006-11-10 11:12 ` Pavel Machek
2006-11-10 11:48 ` Ingo Molnar
2006-11-10 11:56 ` Andi Kleen
2006-11-10 13:12 ` Ingo Molnar
2006-11-10 12:00 ` Pavel Machek
2006-11-10 13:14 ` Ingo Molnar
2006-11-10 11:11 ` Pavel Machek
2006-11-10 10:28 ` Arjan van de Ven
2006-11-10 10:30 ` Andi Kleen
2006-11-10 10:37 ` Arjan van de Ven
2006-11-09 23:38 ` [patch 14/19] dynticks: core code Thomas Gleixner
2006-11-09 23:38 ` [patch 15/19] dyntick: add nohz stats to /proc/stat Thomas Gleixner
2006-11-09 23:38 ` [patch 16/19] dynticks: i386 arch code Thomas Gleixner
2006-11-09 23:38 ` [patch 17/19] dynticks: Fix nmi watchdog Thomas Gleixner
2006-11-09 23:38 ` [patch 18/19] high-res timers, dynticks: enable i386 support Thomas Gleixner
2006-11-09 23:38 ` [patch 19/19] debugging feature: timer stats Thomas Gleixner
2006-11-23 22:24 ` [patch 00/21] Highres / dynticks drop in replacement for 2.6.19-rc5-mm1 Roman Zippel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1163150389.3138.608.camel@laptopd505.fenrus.org \
--to=arjan@infradead.org \
--cc=ak@suse.de \
--cc=akpm@osdl.org \
--cc=johnstul@us.ibm.com \
--cc=lenb@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=zippel@linux-m68k.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®