On Tuesday 09 August 2005 09:31 am, alexander wrote: > On Tue Aug 9 05, Robert Watson wrote: > > In general, it is much preferable that applications link against libc to > > get the system call stubs than that they directly invoke system calls. > > That way, if compatibility interfaces are introduced, etc, the > > application will continue to function. For example, there was at one > > point a migration away from explicit system calls to set certain kernel > > parameters, such as hostname and domainname, towards using sysctl, with > > the system calls being marked obsolete. The C library still provides a > > sethostname() interface, which is actually a wrapper in user space around > > sysctl(). So invoking the C function provided by libc for a system call > > will generally be preferred, even if the originating code is assembly. > > > > Robert N M Watson > > Thx. I'll try that. > > Unfortunately I'm experiencing some problems right now. From time to time > I'm getting a > > 'Bus error: 10 (core dumped)' > > This however appears randomly. One time I run the app everything works > fine,the next time it core dumps. Are there any errors in my code? > > %define SYSARCH 165 ; syscall sysarch(2) > %define I386_SET_IOPERM 4 ; i386_set_ioperm(2) number > > ioperm_args dd 378h > dd 3 > dd 1 > > OpenIO: > push byte ioperm_args > push dword I386_SET_IOPERM > mov eax,SYSARCH > Call _syscall > lea esp,[esp+8] > ret
Just change this to: push byte ioperm_args ; this might be wrong, you need ; to be pushing a 32-bit pointer ; to the ioperm_args structure, not ; a byte push dword I386_SET_IOPERM call sysarch addl $8,%esp ret To use the sysarch() function in libc. -- John Baldwin <[EMAIL PROTECTED]> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[EMAIL PROTECTED]"