Is there some implicit locking of device methods?
John Baldwin
jhb at freebsd.org
Wed Apr 27 15:01:03 UTC 2011
On Tuesday, April 26, 2011 8:17:09 pm Bartosz Fabianowski wrote:
> > If you needs per-file private data for cdev, you would be better served
> > by cdevpriv(9) KPI. Cloning is too hard to use correctly for such task.
>
> Thanks, I just got that working. To help those going down a similar path
> in the future, I would like to note quickly that the following must be
> added to the cdevsw structure to ensure proper clean-up:
>
> .d_flags = D_TRACKCLOSE
>
> I just spent hours debugging panics until I realized only the last
> close() was triggering a call to my .d_close method.
Err, if you use cdevpriv you shouldn't even have a d_close method. All your
d_close logic should be in the cdevpriv destructor, and the kernel will call
your destructor when all references to an open file descriptor go away (i.e.
it is closed).
--
John Baldwin
More information about the freebsd-hackers
mailing list