Using sysarch specific syscalls in assembly?
edelkind-freebsd-hackers at episec.com
Mon Aug 8 20:20:40 GMT 2005
On 8/8/2005, "alexander" <arundel at h3c.de> wrote:
>i386_set_ioperm(2) states that this procedure is a system call. So it should be
>easily accessable through assembly language and it's specific syscall id.
>Unfortunately I wasn't able to find the syscall id in any of the
>syscalls.master files that are part of the source tree.
><machine/sysarch.h> states that this is a sysarch specific syscall for i386
>(hence the i386_*). The following definitions are being made:
>#define I386_GET_IOPERM 3
>#define I386_SET_IOPERM 4
>These syscall numbers however are already taken by read(2) and write(2). So
>how can I make use of these i386 specific syscalls? Is it even possible?
If you're unsure of how a function is called, you can always check the C
library, under 'src/lib/libc/'. I won't repeat john baldwin's
answer, but it's exactly what you'd find there.
That said, C library calls are no more difficult to perform from assembly
language than system calls, so long as you're willing to link in the
standard C library. If you're trying to be more portable, then unless
you have specific reasons for not doing so, perhaps it's something
you'd like to consider.
More information about the freebsd-hackers