Date: Thu, 9 Aug 2012 10:05:47 -0600 From: Warner Losh <imp@bsdimp.com> To: Hans Petter Selasky <hselasky@c2i.net> Cc: Konstantin Belousov <kostikbel@gmail.com>, Ed Schouten <ed@80386.nl>, freebsd-current@freebsd.org Subject: Re: ttydev_cdevsw has no d_purge Message-ID: <E62F7D46-A41B-4353-B773-0FC6296EE8C0@bsdimp.com> In-Reply-To: <201208081941.17860.hselasky@c2i.net> References: <20120801160323.GN2676@deviant.kiev.zoral.com.ua> <201208081827.53824.hselasky@c2i.net> <CAJOYFBD4DxL8ZAeKDYZwtv2FaqcV0Taw%2BLES5nc6Ry_t%2BuzfOw@mail.gmail.com> <201208081941.17860.hselasky@c2i.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Aug 8, 2012, at 11:41 AM, Hans Petter Selasky wrote: > On Wednesday 08 August 2012 19:24:18 Ed Schouten wrote: >>> Ed: I would really like to see a custom argument for the tsw_free(), >>> because it only needs to know the unit number, and the xsc for UCOM = is >>> freed when this is called and cannot be referred. Is it possible to = have >>> a separate "void *" for the tsw_free() function? Is this something = which >>> you can implement? >>=20 >> We could extend the TTY code to allow the softc to be changed, e.g. >> tty_set_softc(). This function could be called right before calling >> tty_rel_gone(). Still, I would prefer it if these kind of things = would >=20 > Are you sure that the new softc won't be used in any callbacks when=20 > tty_rel_gone() is called, except for tsw_free() ? >=20 >> not be part of the API. Is there really no way the deallocation of = the >> softc can be delayed until tsw_free() is called? >=20 > Yes, but that is inconvenient. We use the automatically allocated = softc given=20 > to the driver by newbus. When detach() returns, the softc is freed. = Then we=20 > need to block in detach, and that is causing the problem! I thought the detach protocol was such that you shouldn't return from = detach until all dangling references were gone. you could use tsw_free = to wake up the detach sleeper, no? Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E62F7D46-A41B-4353-B773-0FC6296EE8C0>