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.

_______________________________________________
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to