On Wed, 2005-08-03 at 14:04 +0200, Ingo Molnar wrote:
> * Steven Rostedt <[email protected]> wrote:
>
> > On Wed, 2005-08-03 at 06:56 -0400, linux-os (Dick Johnson) wrote:
> > > On Wed, 3 Aug 2005, Steven Rostedt wrote:
> > > The interrupt handler gets a pointer to a structure called "struct pt_regs".
> > > That contains, amongst other things, the registers pushed onto the stack
> > > during the interrupt. If the segments were kernel segments, the interrupt
> > > occurred while in kernel mode. But..... If you have any code that
> > > needs to know, it's horribly and irreparably broken beyond all
> > > repair. Interrupts need to be handled NOW, without regard to what
> > > got interrupted.
> > >
> >
> > By the time you get to __do_IRQ there's already more stuff on the
> > stack. And the pt_regs is arch specific so this doesn't help.
>
> the actual layout of pt_regs is arch-specific, but user_mode(regs) is
> pretty much generic across most arches.
>
OK I did the following:
find arch -name "*.c" ! -type d | xargs grep "update_process_times" |grep -v user_mode
arch/arm/kernel/smp.c: update_process_times(user);
arch/um/kernel/time_kern.c: update_process_times(CHOOSE_MODE(user_context(UPT_SP(regs)), (regs)->skas.is_user));
arch/sparc64/kernel/smp.c: update_process_times(user);
arch/m32r/kernel/smp.c: update_process_times(user);
arch/alpha/kernel/smp.c: update_process_times(user);
arch/i386/kernel/apic.c: * update_process_times() expects us to have done irq_enter().
arch/x86_64/kernel/apic.c: * update_process_times() expects us to have done irq_enter().
arch/sparc/kernel/sun4d_smp.c: update_process_times(user);
arch/sparc/kernel/sun4m_smp.c: update_process_times(user);
I also did a find without the -v user_mode and here's some of the output
(filtered to only show what's relevant):
arch/arm/kernel/time.c: update_process_times(user_mode(regs));
arch/sparc64/kernel/time.c: update_process_times(user_mode(regs));
arch/m32r/kernel/time.c: update_process_times(user_mode(regs));
arch/alpha/kernel/time.c: update_process_times(user_mode(regs));
arch/i386/kernel/apic.c: update_process_times(user_mode_vm(regs));
arch/x86_64/kernel/time.c: update_process_times(user_mode(regs));
arch/sparc/kernel/pcic.c: update_process_times(user_mode(regs));
So all but (amusingly) user-mode-linux use the user_mode macro. So it
does look good. I'm not too worried right now for user-mode-linux, but
that sould be fixed too if need be.
So I'll add this to the patch I'll be sending you soon (after it's all
tested).
-- Steve
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
|
|