linux-mips
[Top] [All Lists]

Re: preempt_schedule_irq missing from mfinfo[]?

To: Atsushi Nemoto <anemo@mba.ocn.ne.jp>
Subject: Re: preempt_schedule_irq missing from mfinfo[]?
From: Ralf Baechle <ralf@linux-mips.org>
Date: Wed, 6 Jul 2005 10:01:38 +0100
Cc: djohnson+linuxmips@sw.starentnetworks.com, linux-mips@linux-mips.org
In-reply-to: <20050706.122912.71087098.nemoto@toshiba-tops.co.jp>
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <17093.19241.353160.946039@cortez.sw.starentnetworks.com> <20050703.005921.25910131.anemo@mba.ocn.ne.jp> <20050705200308.GE18772@linux-mips.org> <20050706.122912.71087098.nemoto@toshiba-tops.co.jp>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mutt/1.4.2.1i
On Wed, Jul 06, 2005 at 12:29:12PM +0900, Atsushi Nemoto wrote:

> >>>>> On Tue, 5 Jul 2005 21:03:09 +0100, Ralf Baechle <ralf@linux-mips.org> 
> >>>>> said:
> ralf> If the WCHAN column of ps axl is supposed to be any useful we
> ralf> need to unwind the stack until we find the caller of the
> ralf> sleeping or scheduling function.  Very useful for debugging.
> 
> Yes, but many sleeping/scheduling (such as schedule_timeout(),
> __down(), etc.)  are compiled without -fno-omit-frame-pointer, so
> you can not find the caller of such functions anyway.

Without additional information a framepointer isn't terribly useful on
MIPS.  Unfortunately it's stored at a non-constant offset in a function's
stackframe.

> And some sleeping/scheduling functions which are compiled with
> -fno-omit-frame-pointer are static or deprecated (sleep_on(), etc.)
> 
> You can find the caller of "schedule()" even with simple
> thread_saved_pc().  I think it is enough so I do not think it is worth
> to fix (and maintain) current minfo[].

The alternative would be to finally bite the bullet and add a wchan field
to thread_struct and initialize it in all the sleeping functions.

The IA-64 people have something like a DWARF-based frame unwinder but
that just seems to heavy.

  Ralf

<Prev in Thread] Current Thread [Next in Thread>