Messages in this thread | | | Date | Wed, 13 Sep 2006 01:35:08 -0400 | From | "Albert Cahalan" <> | Subject | Re: OT: calling kernel syscall manually |
| |
David Woodhouse writes: > On Tue, 2006-09-12 at 14:05 +0200, guest01 wrote:
>> 3 -> using kernel directly >> >> Ok, the third one is a little bit tricky, at least for me. >> I found an example for lseek, but I don't know how to convert >> that for mkdir. I don't know the necessary arguments, .. > > 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.
(not that this should be needed: gcc is broken if it can't save/restore the needed registers)
> 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.
I could hack up my own assembly. I did that for clone(), but I didn't enjoy that waste of my time. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |