From owner-cvs-src@FreeBSD.ORG Tue Oct 14 15:17:39 2003 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B948B16A4BF for ; Tue, 14 Oct 2003 15:17:39 -0700 (PDT) Received: from mail.speakeasy.net (mail6.speakeasy.net [216.254.0.206]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6F7E843FBD for ; Tue, 14 Oct 2003 15:17:34 -0700 (PDT) (envelope-from jhb@FreeBSD.org) Received: (qmail 7268 invoked from network); 14 Oct 2003 22:17:33 -0000 Received: from unknown (HELO server.baldwin.cx) ([216.27.160.63]) (envelope-sender )encrypted SMTP for ; 14 Oct 2003 22:17:33 -0000 Received: from laptop.baldwin.cx (gw1.twc.weather.com [216.133.140.1]) by server.baldwin.cx (8.12.9/8.12.9) with ESMTP id h9EMHRce049705; Tue, 14 Oct 2003 18:17:30 -0400 (EDT) (envelope-from jhb@FreeBSD.org) Message-ID: X-Mailer: XFMail 1.5.4 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: Date: Tue, 14 Oct 2003 18:17:35 -0400 (EDT) From: John Baldwin To: deischen@FreeBSD.org X-Spam-Checker-Version: SpamAssassin 2.55 (1.174.2.19-2003-05-19-exp) cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org cc: Jeff Roberson Subject: RE: cvs commit: src/sys/sys mutex.h X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Oct 2003 22:17:39 -0000 On 14-Oct-2003 Daniel Eischen wrote: > On Tue, 14 Oct 2003, John Baldwin wrote: > >> >> On 14-Oct-2003 Jeff Roberson wrote: >> > On Tue, 14 Oct 2003, John Baldwin wrote: >> > >> >> >> >> On 12-Oct-2003 Jeff Roberson wrote: >> >> > jeff 2003/10/12 14:02:55 PDT >> >> > >> >> > FreeBSD src repository >> >> > >> >> > Modified files: >> >> > sys/sys mutex.h >> >> > Log: >> >> > - Implement a mtx_ownedby() macro which can be used to determine if a >> >> > particular thread owns a mutex. This cannot be done without races >> >> > unless the thread is curthread. >> >> >> >> This is a very bad idea. What use do you have for this that is not >> >> already handled by mtx_owned() or a mutex assertion? >> > >> > I know it is racy in most contexts. I use it to check to see if a thread >> > on the runq owns giant. Since I have the sched lock it isn't racy but >> > even if it was it wouldn't matter in this case. >> >> sched lock doesn't keep it from being racy. Uncontested acquire and >> releases don't go anywhere near sched lock. Are you checking a >> non-curthread thread pointer? Maybe you could just do it for curthread >> and that would be enough for your heuristic, i.e. >> >> if (thread == curthread && mtx_owned(&Giant)) { >> ... >> } >> >> I'm just worried that if this is there someone is going to use it. :( > > Just a thought. If you could assign priorities to mutexes > (like priority ceiling/protect mutexes), threads owning > such mutexes would inherit their priority and the schedulers > wouldn't need to know about who owned specific mutexes. They are assigned by whoever else wants the mutex. :) As in this case, Giant is the only true special case, and it seems that his tweaking is not related to priorities but is rather an optimization that falls out from Giant's special property of still locking 90% or so of the kernel. -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/