From owner-freebsd-hackers Wed Mar 8 8:46:33 2000 Delivered-To: freebsd-hackers@freebsd.org Received: from bingnet2.cc.binghamton.edu (bingnet2.cc.binghamton.edu [128.226.1.18]) by hub.freebsd.org (Postfix) with ESMTP id 08FF837C1CE for ; Wed, 8 Mar 2000 08:46:30 -0800 (PST) (envelope-from zzhang@cs.binghamton.edu) Received: from sol.cs.binghamton.edu (sol.cs.binghamton.edu [128.226.123.100]) by bingnet2.cc.binghamton.edu (8.9.3/8.9.3) with SMTP id LAA17001; Wed, 8 Mar 2000 11:46:20 -0500 (EST) Date: Wed, 8 Mar 2000 09:21:52 -0500 (EST) From: Zhihui Zhang To: Chris Costello Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: Where is pci_intr_establish() & _thread_sys_read()? In-Reply-To: <20000306181404.H4990@holly.calldei.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Mon, 6 Mar 2000, Chris Costello wrote: > On Monday, March 06, 2000, Zhihui Zhang wrote: > > Can anyone tell me where is the code for pci_intr_establish() and > > _thread_sys_read()? I could not find them under /usr/src. > > I can tell you offhand that _thread_sys_anything is the _real_ > syscall for `anything'. This is because a lot of syscalls are > reimplemented within libc_r for reasons that are kind of obvious > (directly calling the read syscall from one thread would block > all the other threads in a process). So _thread_sys_open() == > open(2), _thread_sys_read() == read(2), etc. > You are right. In file libc/i386/SYS.h , you can see the following: #define PSYSCALL(x) 2: PIC_PROLOGUE; jmp PIC_PLT(HIDENAME(cerror)); \ ENTRY(__CONCAT(_thread_sys_,x)); \ lea __CONCAT(SYS_,x),%eax; KERNCALL; jb 2b -Zhihui To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message