Re: OT: calling kernel syscall manually

From: Albert Cahalan
Date: Wed Sep 13 2006 - 11:53:34 EST


On 9/13/06, David Woodhouse <dwmw2@xxxxxxxxxxxxx> wrote:
On Wed, 2006-09-13 at 01:35 -0400, Albert Cahalan wrote:
> > The third one has always been broken on i386 for PIC code
>
> No, I was just using it today in PIC i386 code.
> The %ebx register gets pushed, the needed value
> gets moved into %ebx, the int 0x80 is done, and
> the %ebx register gets popped. Only a few odd
> calls like clone() need something different.

That's a very recent change -- it was broken for years before that.

It's fixed now. Obviously people care. Probably the
only reason it wasn't fixed earlier is that PIC code
just isn't all that popular for i386 executables.

> > and was pointless anyway, since glibc provides this
> > functionality. The kernel method has been removed from
> > userspace visibility all architectures, and we plan to
> > remove it entirely in 2.6.19 since it's not at all useful.
>
> It's damn useful. Hint: Linux does not require glibc.

Are you being deliberately obtuse or is it just a natural talent?

Other C libraries also provide syscall() -- at least dietlibc and uClibc
do.

OK, but I don't need to be using a C library. I could write
my own or do without.

Kernel headers do not exist to provide a library of random crap for
userspace to use.

Sure, but this is existing functionality. It also isn't random crap;
it's the kernel's system call interface.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/