From owner-freebsd-arch Tue Aug 20 16:37:55 2002 Delivered-To: freebsd-arch@freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7C01537B400; Tue, 20 Aug 2002 16:37:50 -0700 (PDT) Received: from pintail.mail.pas.earthlink.net (pintail.mail.pas.earthlink.net [207.217.120.122]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1607043E6A; Tue, 20 Aug 2002 16:37:50 -0700 (PDT) (envelope-from tlambert2@mindspring.com) Received: from pool0108.cvx21-bradley.dialup.earthlink.net ([209.179.192.108] helo=mindspring.com) by pintail.mail.pas.earthlink.net with esmtp (Exim 3.33 #1) id 17hIZI-0001CW-00; Tue, 20 Aug 2002 16:37:49 -0700 Message-ID: <3D62D292.D0F3FEE6@mindspring.com> Date: Tue, 20 Aug 2002 16:36:50 -0700 From: Terry Lambert X-Mailer: Mozilla 4.79 [en] (Win98; U) X-Accept-Language: en MIME-Version: 1.0 To: Maxime Henrion Cc: arch@freebsd.org, bright@mu.org, bde@freebsd.org, iedowse@freebsd.org, gallatin@freebsd.org Subject: Re: Solving the stack gap issue References: <200208171918.aa72556@salmon.maths.tcd.ie> <20020818055951.N12475-100000@gamplex.bde.org> <15714.17605.575558.398279@grasshopper.cs.duke.edu> <20020820153515.GL75574@elvis.mu.org> <20020820184624.GB86074@elvis.mu.org> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-arch@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Maxime Henrion wrote: > I've already started working on this in my mux_giant branch. I was very > busy with nmount these days so I didn't touch it since quite long, but I > knon jhb has been IFC'ing it not so long ago. This branch removes the > acquiring and releasing of Giant in syscall() and let the syscalls lock > it if they need to. It also removes the 'M' prefix from the > syscalls.master file. Feel free to use that branch if you want to work > on this stuff. I thought this was already do-able on a call by call basis? From sysent.h: struct sysent { /* system call table */ int sy_narg; /* number of arguments */ sy_call_t *sy_call; /* implementing function */ }; #define SYF_ARGMASK 0x0000FFFF #define SYF_MPSAFE 0x00010000 It seems to me that SYF_MPSAFE is the flag you want to look at to decide whether you want to grab giant or not? If not, it'd be really easy to add up to 15 more flags... one I had been considering was interruptability, and another was a 2 bit hint as to whether the call was non-blocking, might block, or would block (for use by the new threads code, to decide on whether to allocate a fake, delayed, or up-front blocking context). -- Terry To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-arch" in the body of the message