From: Dominik Brodowski <linux@dominikbrodowski.net>
To: Greg KH <greg@kroah.com>
Cc: dtor_core@ameritech.net, linux-kernel@vger.kernel.org,
linux-usb-devel@lists.sourceforge.net,
Kay Sievers <kay.sievers@vrfy.org>
Subject: Re: [RFC] Changes to the driver model class code.
Date: Wed, 16 Mar 2005 02:01:14 +0100 [thread overview]
Message-ID: <20050316010114.GA9263@isilmar.linta.de> (raw)
In-Reply-To: <20050315221431.GC28880@kroah.com>
On Tue, Mar 15, 2005 at 02:14:31PM -0800, Greg KH wrote:
> > So this means every device will have yet another reference count, and you
> > need to be aware of _each_ lifetime to write correct code. And the
> > _reference counting_ is the hard thing to get right, so we should make
> > _that_ easier. The existing class API was a step towards this direction, and
> > with the changes you're suggesting here we'd do two jumps backwards.
>
> You are correct, it was a step forward in this direction.
>
> But we now have a kref to handle the reference counting for the device,
> which make things a whole lot easier than ever before.
Is it really easier if you have to be aware of _both_ the class reference
possibly having reached zero yet and the kref device reference
possibly having reached zero yet? Using your approach, you need to take
_two_ lifetimes into account instead of one. Think of class device
attributes being opened / still being accessed when kref device reference
reaching zero... you need to check for that in code now, AFAICS, while you
could rely on "we still have a reference to the _device_" in "historic"
class device attribute access paths.
> But the both of you are correct, there is a real need for the class code
> to support trees of devices that are presented to userspace (which is
> what the class code is for). I'm not taking that away, just trying to
> make the interface to that code simpler.
The interface may get simpler, but we lose the advantages. And I prefer a
interface which reduces the chances of doing things wrongly; and at least
the existing warnings on empty release functions force you to _think_ about
what you do.
> I'm also not saying that I'm going to go off and delete those functions
> from the kernel today, or tomorrow.
...
> Anyway, don't worry, the code isn't going away anytime soon,
That's totally besides the point. If the decision was made to indeed do this
transition, I'd be all for doing this fast. If the "old" code was gone
within two weeks, I wouldn't care because of the short period, but because
of the functionality being lost:
> I will not be removing any functionality, don't worry :)
the "functionality" of the device core to teach, encourage, and forcing to
think of reference counting is being lost by this approach. Independent of
the question whether the transition will take two weeks or two years.
> It will not make the reference counting logic easier to get wrong, or
> easier to get right. It totally takes it away from the user, and makes
> them implement it themselves if they so wish (like the USB HCD patch
> does.).
Keeping the chance to do the "new"/class_simple way is a good thing -- so
that anybody who _knows_ _exactly_ what he does can shoot himself in his
foot^W^W^W^W^W do what is best for the affected code.
> we just
> need to make it easier to use. Any suggestions that any of you have to
> make this that way (as you are the ones who had to use it to start with)
> would be greatly appreciated.
drivers/base/class_simple.c:
....
printk("are you really sure you don't want not to have reference counting for free by using struct class instead of struct class_simple *?\n");
....
:)
Thanks,
Dominik
next prev parent reply other threads:[~2005-03-16 1:01 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-15 17:08 Greg KH
2005-03-15 17:09 ` Greg KH
2005-03-15 17:10 ` Greg KH
2005-03-15 17:10 ` Greg KH
2005-03-15 17:11 ` Greg KH
2005-03-15 17:47 ` Dmitry Torokhov
2005-03-15 19:34 ` Greg KH
2005-03-15 19:47 ` [linux-usb-devel] " Dmitry Torokhov
2005-03-15 20:15 ` Dominik Brodowski
2005-03-15 22:14 ` Greg KH
2005-03-16 1:01 ` Dominik Brodowski [this message]
2005-03-16 3:42 ` Dmitry Torokhov
2005-03-27 14:42 ` Dominik Brodowski
2005-03-15 19:08 ` Dominik Brodowski
2005-03-15 19:30 ` [linux-usb-devel] " Dmitry Torokhov
2005-03-15 19:34 ` Sean
2005-03-15 19:45 ` John Lenz
2005-03-15 19:51 ` Greg KH
2005-03-15 20:06 ` Dominik Brodowski
2005-03-15 20:14 ` [linux-usb-devel] " Dmitry Torokhov
2005-03-15 20:35 ` David Brownell
2005-03-15 20:48 ` Dmitry Torokhov
2005-03-15 21:14 ` David Brownell
2005-03-15 21:23 ` Dominik Brodowski
2005-03-15 22:05 ` Dmitry Torokhov
2005-03-15 22:29 ` David Brownell
2005-03-16 23:16 ` Jon Smirl
2005-03-17 6:17 ` Greg KH
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050316010114.GA9263@isilmar.linta.de \
--to=linux@dominikbrodowski.net \
--cc=dtor_core@ameritech.net \
--cc=greg@kroah.com \
--cc=kay.sievers@vrfy.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome