From owner-freebsd-arch@FreeBSD.ORG Sat Nov 24 16:21:05 2012 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 868FE82F for ; Sat, 24 Nov 2012 16:21:05 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from mail-lb0-f182.google.com (mail-lb0-f182.google.com [209.85.217.182]) by mx1.freebsd.org (Postfix) with ESMTP id 000D08FC08 for ; Sat, 24 Nov 2012 16:21:04 +0000 (UTC) Received: by mail-lb0-f182.google.com with SMTP id go10so6881245lbb.13 for ; Sat, 24 Nov 2012 08:21:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:reply-to:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=VmTZAvovPkRo1zPO9qbTWvcNy//oSoX3tB2Vl5lD1uM=; b=goRe85sGEZELp76pQUn3YPoIm99yJWX+PUMBZKpBKlVABBWMfBCF48mBpFvUM02DxG N7VUSp8k7PgslQvD1MzdoDPCuFSe6HocPvXFyqK+pE0VJPbmbRqonsxNb+8FS5RynbYQ aKGjvNBFaVwBGe6IOuGyRFsYCH1RG2FuRZg3k5vlbyKCLiuRqHGQr5Q63WxmAKZGjBw+ yvHyZ7+UQFSQtu/cXxrHerk5H2I+xHq2Q18u7faB+jsU1LhuwHEeVZrRyvrKd5BrTtdM QErifHzLgOF1gZVo1uUr45DcVq21u3KqNVgxqx1dhse/x9UWNCIuY8itADZARv8X10Re V2rg== MIME-Version: 1.0 Received: by 10.152.104.50 with SMTP id gb18mr6490716lab.9.1353774063409; Sat, 24 Nov 2012 08:21:03 -0800 (PST) Sender: asmrookie@gmail.com Received: by 10.112.134.5 with HTTP; Sat, 24 Nov 2012 08:21:03 -0800 (PST) In-Reply-To: <50B0F306.6020906@mu.org> References: <50B0F306.6020906@mu.org> Date: Sat, 24 Nov 2012 16:21:03 +0000 X-Google-Sender-Auth: RCkEQu2KDMnYPs3Ia4afwodqXQw Message-ID: Subject: Re: [RFC] sema_wait_sig From: Attilio Rao To: Alfred Perlstein Content-Type: text/plain; charset=UTF-8 Cc: arch@freebsd.org, Oleksandr Tymoshenko X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: attilio@FreeBSD.org List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 24 Nov 2012 16:21:05 -0000 On Sat, Nov 24, 2012 at 4:17 PM, Alfred Perlstein wrote: > On 11/24/12 7:21 AM, Attilio Rao wrote: >> >> On Sat, Nov 24, 2012 at 3:03 PM, Attilio Rao wrote: >>> >>> On Fri, Nov 23, 2012 at 6:12 AM, Oleksandr Tymoshenko >>> wrote: >>>> >>>> Hello, >>>> >>>> Is there any particular reason FreeBSD does not have sema_wait_sig >>>> function? It seems to be easily implementable using cv_wait_sig >>>> function. >>> >>> The sema(9) primitive is considered obsolete/dying. >>> You should really use mtx + condvar (so just go using cv_wait_sig() >>> directly). >>> >>> I had a patch to remove it all from the kernel few years ago but I >>> never got to commit it. >>> It would be good if we can remove this primitive off before 10.0. >> >> Before to start receiving bikeshead e-mails by "savers of the nation", >> let me explain this a bit. This cames directly from the necessity to >> shrunk the number of locking primitives we offer, in particular when >> such primitives have very naive/non-standard interface, meant as >> dangerous and not intuitive KPI. >> The biggest 2 beasts to chase are then sema(9) and lockmgr(9). >> >> The former should be replaced by a smart use of mtx + flags/counters + >> sleep(9)/condvar(9). I see some of the usage are the ones that want >> the first locker to sleep (counter as 0 at init time), for example. >> >> The latter should be replaced by sx(9) interface, but that's very >> tricky. lockmgr have a lot of strange patterns which require a fair >> bit of understanding and work to be controlled (LK_DRAIN, >> LK_SLEEPFAIL, interlock handling, lockmgr_disown(), etc.). I'm sure sx >> might grow up some further operations to cope with it (namely the >> interlock and maybe disowning) but that's really minor turbolence as >> removing redundant lockmgr would be a big win for us. Right now it is >> just a burden and more code to maintain for a very little gain. >> >> As a last item, we may also look at splitting the sleep-mtx and >> spin-mtx interface and replace all the occurence of the former with >> rwlocks, of course always held in write mode. This way the mtx(9) will >> only serve spinlocks and their implementation will be very self >> contained. >> >> Thanks, >> Attilio >> >> > > People have been trying to "kill lockmgr" for 5+ years now. > > In the meanwhile discouraging people from using things that make their lives > easier in porting drivers is probably wrong. > > According to this post I shouldn't touch anything that has to do with any > SMP stuff until you complete your upcoming work because it will all be > turned upside down. I don't have any plan to do it right now and if you want to follow this you are welcome. If you do want to do something else (like adding sema_wait_sig()) I'm opposed to it and I'm giving you my opinion on why. You can do what you want then, but at least I'm free to say publically what I think should be done to have correct code, or should I just let people which have 0 history of contributing to SMP just turn upside down all the last 15 years of work? Attilio -- Peace can only be achieved by understanding - A. Einstein