device driver: cdesw questions?

Kostik Belousov kostikbel at gmail.com
Wed Jan 21 06:15:16 PST 2009


On Wed, Jan 21, 2009 at 04:12:23PM +0200, Andriy Gapon wrote:
> on 21/01/2009 16:05 Robert Watson said the following:
> > 
> > On Wed, 21 Jan 2009, Andriy Gapon wrote:
> > 
> >> Question 1: I am writing a driver that would use per-open private data
> >> (among other features). Do I have to use D_TRACKCLOSE flag in this
> >> case? In general I am a little bit confused about when d_close is
> >> invoked. Supposing D_TRACKCLOSE is not set and multiple programs
> >> concurrently open, use and close a device - when d_close is called -
> >> when one program closes its last descriptor tied to the device or when
> >> the system-wide last such descriptor is closed?
> > 
> > Kostik has already pointed at the cdevpriv API, but just to reiterate
> > his point: most people will find the semantics of D_TRACKCLOSE confusing
> > and consider them incorrect, so I would advise against using them.
> 
> Robert, Kostik,
> 
> in simplistic layman's terms I need the following - when a particular
> program "closes my cdev" (explicitly or via exit) I need to catch that
> and de-allocate certain resources. There can be multiple concurrent
> programs opening, using and closing my cdev.
> 
> I guess what you both say is that I shouldn't use D_TRACKCLOSE, instead
> I should perform the resource management in cdevpriv destructor.
> Am I guessing correctly this time?

Yes. This is the purpose of the cdevpriv KPI.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-hackers/attachments/20090121/4bf2d0ce/attachment.pgp


More information about the freebsd-hackers mailing list