Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Oct 2007 14:20:44 -0500
From:      Derek Ragona <derek@computinginnovations.com>
To:        Yuri <yuri@rawbw.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Calling syscalls through int 0x80 documentation?
Message-ID:  <6.0.0.22.2.20071018141850.02482e78@mail.computinginnovations.com>
In-Reply-To: <1192733243.4717aa3b1843f@webmail.rawbw.com>
References:  <1192731161.4717a21980065@webmail.rawbw.com> <6.0.0.22.2.20071018132410.02311ad8@mail.computinginnovations.com> <1192733243.4717aa3b1843f@webmail.rawbw.com>

next in thread | previous in thread | raw e-mail | index | archive | help
At 01:47 PM 10/18/2007, Yuri wrote:
> > You can try here:
> > http://www.ctyme.com/intr/int-80.htm
> >
>Thanks Derek.
>This site just says: parameters on stack.
>
>So when following this I write the function 'mysyscall' (below) it doesn't 
>work.
>It should return 3 but returns 14.
>And I am on i386.
>
>So something is missing.
>
>Yuri
>
>--- code----
>#include <fcntl.h>
>
>extern int mysyscall (
>           int syscall_no,
>           int a1, int a2, int a3,
>           int a4, int a5, int a6);
>
>asm(
>".text\n"
>"mysyscall:\n"
>"       push    28(%esp)\n"
>"       push    24(%esp)\n"
>"       push    20(%esp)\n"
>"       push    16(%esp)\n"
>"       push    12(%esp)\n"
>"       push    8(%esp)\n"
>"       push    4(%esp)\n"
>"       int     $0x80\n"
>"       pop     %ecx\n"
>"       pop     %ecx\n"
>"       pop     %ecx\n"
>"       pop     %ecx\n"
>"       pop     %ecx\n"
>"       pop     %ecx\n"
>"       pop     %ecx\n"
>"       ret\n"
>".previous\n"
>);
>
>main() {
>   char *fname = "myxxxfile";
>   //int fd = open(fname, O_WRONLY|O_CREAT);
>   int fd = mysyscall(5/*open*/, (int)fname,O_WRONLY|O_CREAT,0,0,0,0); // open
>   printf("fd=%i\n",fd);
>}

I guess I'd ask why you want to use syscall at all to just open a file?  I 
thought you wanted to access some hardware and had no other way to do that.

         -Derek

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
MailScanner thanks transtec Computers for their support.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6.0.0.22.2.20071018141850.02482e78>