From owner-freebsd-current@FreeBSD.ORG Thu Aug 9 05:36:59 2012 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id B80C0106566C for ; Thu, 9 Aug 2012 05:36:59 +0000 (UTC) (envelope-from hselasky@c2i.net) Received: from swip.net (mailfe06.c2i.net [212.247.154.162]) by mx1.freebsd.org (Postfix) with ESMTP id 45CA58FC08 for ; Thu, 9 Aug 2012 05:36:59 +0000 (UTC) X-T2-Spam-Status: No, hits=-1.0 required=5.0 tests=ALL_TRUSTED Received: from [176.74.212.201] (account mc467741@c2i.net HELO laptop015.hselasky.homeunix.org) by mailfe06.swip.net (CommuniGate Pro SMTP 5.4.4) with ESMTPA id 304841085; Thu, 09 Aug 2012 07:36:51 +0200 From: Hans Petter Selasky To: Ed Schouten Date: Thu, 9 Aug 2012 07:37:21 +0200 User-Agent: KMail/1.13.7 (FreeBSD/9.1-PRERELEASE; KDE/4.8.4; amd64; ; ) References: <20120801160323.GN2676@deviant.kiev.zoral.com.ua> <201208081941.17860.hselasky@c2i.net> In-Reply-To: X-Face: 'mmZ:T{)),Oru^0c+/}w'`gU1$ubmG?lp!=R4Wy\ELYo2)@'UZ24N@d2+AyewRX}mAm; Yp |U[@, _z/([?1bCfM{_"B<.J>mICJCHAzzGHI{y7{%JVz%R~yJHIji`y>Y}k1C4TfysrsUI -%GU9V5]iUZF&nRn9mJ'?&>O MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201208090737.21547.hselasky@c2i.net> Cc: Konstantin Belousov , freebsd-current@freebsd.org Subject: Re: ttydev_cdevsw has no d_purge X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Aug 2012 05:36:59 -0000 On Wednesday 08 August 2012 22:46:28 Ed Schouten wrote: > Hi Hans, > > 2012/8/8 Hans Petter Selasky : > > Are you sure that the new softc won't be used in any callbacks when > > tty_rel_gone() is called, except for tsw_free() ? > > Yes. Otherwise you would have already seen a kernel panic. See > /sys/sys/ttydevsw.h; it has assertions on the locking. > > > It is like a drain state, where a unit is collected for free, and then > > committed to free state when the tsw_free() is called. In the [unlocked] > > time in between the unit cannot be re-used. > > How is this different from calling alloc/free directly? Why would it > need to go through this `drain' state? Because multiple TTYS can share the same ucom unit, and then stuff gets more complicated. I would then need refcounting and such to figure out when to actually free everything. This is simply not needed. I'll make a patch soonish to extend tty.h with a #define tty_set_softc() if you don't mind. --HPS