Re: Need help in understanding x86 syscall

Steven Rostedt
2005-08-12T10:34:34Z

On Thu, 2005-08-11 at 22:04 -0700, Jeff Carr wrote:

> But are you using libc6-i686? That enables NPTL. Perhaps the behavior
> difference is there? I'm surprised int 80 doesn't really cause an
> interrupt; it doesn't jump to the appropriate place in the x86 vector
> table? Interesting.

int 80 does jump to the appropriate place in the vector table. In
arch/i386/kernel/traps.c: init_traps we have the line:

set_system_gate(SYSCALL_VECTOR,&system_call);

Which sets up a trap gate in the vector table to jump to system_call
upon an "int 80", and this is exactly what I see. It does not, however,
jump to sysenter_entry. That would happen when sysenter is used instead
of "int 80".

When I use to work with a bunch of hardware folks, they would get mad at
me when I said a system call was initiated with an interrupt. They
always told me that an interrupt was from an external source. Anything
that the CPU causes itself (system call, page fault, etc) is called an
exception, or trap. So I would try to use those definitions from then
on. As a software guy though, I thought of them as the same thing.

-- Steve