From owner-freebsd-questions@FreeBSD.ORG Thu Oct 18 19:28:49 2007 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 591F016A417 for ; Thu, 18 Oct 2007 19:28:49 +0000 (UTC) (envelope-from yuri@rawbw.com) Received: from mail0.rawbw.com (mail0.rawbw.com [198.144.192.41]) by mx1.freebsd.org (Postfix) with ESMTP id 432A313C491 for ; Thu, 18 Oct 2007 19:28:48 +0000 (UTC) (envelope-from yuri@rawbw.com) Received: from mail0.rawbw.com (localhost [127.0.0.1]) by mail0.rawbw.com (8.13.8/8.13.8) with ESMTP id l9IJSj8B082132; Thu, 18 Oct 2007 12:28:45 -0700 (PDT) Received: (from www@localhost) by mail0.rawbw.com (8.13.8/8.13.8/Submit) id l9IJShWt082113; Thu, 18 Oct 2007 12:28:43 -0700 (PDT) X-Authentication-Warning: mail0.rawbw.com: www set sender to yuri@rawbw.com using -f Received: from new-5000.Cadence.COM (new-5000.Cadence.COM [158.140.1.25]) by webmail.rawbw.com (IMP) with HTTP for ; Thu, 18 Oct 2007 12:28:42 -0700 Message-ID: <1192735722.4717b3ea8273a@webmail.rawbw.com> Date: Thu, 18 Oct 2007 12:28:42 -0700 From: Yuri To: Derek Ragona References: <1192731161.4717a21980065@webmail.rawbw.com> <6.0.0.22.2.20071018132410.02311ad8@mail.computinginnovations.com> <1192733243.4717aa3b1843f@webmail.rawbw.com> <6.0.0.22.2.20071018141850.02482e78@mail.computinginnovations.com> In-Reply-To: <6.0.0.22.2.20071018141850.02482e78@mail.computinginnovations.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit User-Agent: Internet Messaging Program (IMP) 3.2.1 X-Originating-IP: 158.140.1.25 Cc: freebsd-questions@freebsd.org Subject: Re: Calling syscalls through int 0x80 documentation? X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Oct 2007 19:28:49 -0000 > 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, Opening a file is just an example. I want to be able to make any system call this way since my program for whatever reasons has to be compiled with such gcc options that prevent being linked to system calls in the traditional way. No hardware issues for me. Btw I submitted the wrong assembly code with my previous message. The right one (still not working) is below. Lack of documentation causes me to ask this kind of question here. Yuri ---- code --- #include extern int mysyscall ( int syscall_no, int a1, int a2, int a3, int a4, int a5, int a6); asm( ".text\n" "mysyscall:\n" " movl %esp,%ebx\n" " push 28(%ebx)\n" " push 24(%ebx)\n" " push 20(%ebx)\n" " push 16(%ebx)\n" " push 12(%ebx)\n" " push 8(%ebx)\n" " push 4(%ebx)\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, (int)fname,O_WRONLY|O_CREAT,0,0,0,0); // open printf("fd=%i\n",fd); }