From owner-freebsd-current Mon Feb 11 15: 0:20 2002 Delivered-To: freebsd-current@freebsd.org Received: from rwcrmhc54.attbi.com (rwcrmhc54.attbi.com [216.148.227.87]) by hub.freebsd.org (Postfix) with ESMTP id B900237B402; Mon, 11 Feb 2002 15:00:17 -0800 (PST) Received: from InterJet.elischer.org ([12.232.206.8]) by rwcrmhc54.attbi.com (InterMail vM.4.01.03.27 201-229-121-127-20010626) with ESMTP id <20020211230016.XKBU1214.rwcrmhc54.attbi.com@InterJet.elischer.org>; Mon, 11 Feb 2002 23:00:16 +0000 Received: from localhost (localhost.elischer.org [127.0.0.1]) by InterJet.elischer.org (8.9.1a/8.9.1) with ESMTP id OAA18359; Mon, 11 Feb 2002 14:45:52 -0800 (PST) Date: Mon, 11 Feb 2002 14:45:51 -0800 (PST) From: Julian Elischer To: Alfred Perlstein Cc: jhb@freebsd.org, bde@freebsd.org, current@freebsd.org Subject: Re: ucred holding patch, BDE version In-Reply-To: <20020211143456.I63886@elvis.mu.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG In the current world, when the thread enters userland, it does: lock giant crfree() (which includes mutexes) unlock giant if there are ASTs it does this once again for each AST waiting as well. And on the way into the system it does: lock process crhold() (which includes mutex ops) unlock process so if there is a single AST (not uncommon) it does on a system call, 4 to 6 locks and 4 to 6 unlocks just to get a reference on the ucred it already had a reference on. By not freeing it when going to userland, and checking if it is the right one when returning to the kernel, we replace that with a pointer comparison (well maybe 2) 99.999% of the time. John still wants to free it if INVARIANTS is on so he canh trap on inapropriate access. I'm not sure it's needed but am willing to do so.. On Mon, 11 Feb 2002, Alfred Perlstein wrote: > * Julian Elischer [020211 14:06] wrote: > > here is the BDE version ready to commit. > > Extended to other architectures. > > > > Bruce, John, comments? > > > > As I was adding a prototype to ucred.h I stripped the __Ps of the others in that > > section > > (in the spirit of "change it when editing it anyhow" > > I've been watching this patch fly back and forth several times now, > my question is, what exactly is this supposed to protect us from > and/or accomplish? > > -Alfred > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message