Messages in this thread |  | | Date | Wed, 12 Feb 2014 11:48:44 +0530 | From | "Srivatsa S. Bhat" <> | Subject | Re: [PATCH 01/51] CPU hotplug: Provide lockless versions of callback registration functions |
| |
On 02/12/2014 02:21 AM, Toshi Kani wrote: > On Wed, 2014-02-12 at 00:50 +0530, Srivatsa S. Bhat wrote: >> On 02/11/2014 11:05 PM, Toshi Kani wrote: > : >>> How about this? foo_cpu_notifier returns NOP when foo_notifier_ready is >>> false. >>> >>> register_cpu_notifier(&foobar_cpu_notifier); >>> >>> get_online_cpus(); >>> >>> for_each_online_cpu(cpu) >>> init_cpu(cpu); >>> >>> foo_notifier_ready = true; >>> >>> put_online_cpus(); >>> >> >> Nah, that looks a lot like some quick-n-dirty hack ;-( >> It would also amount to burdening the various subsystems to add weird-looking >> pieces of code such as this in their callbacks: >> >> if (!foo_notifier_ready) >> return NOTIFY_OK; >> >> This only makes it all the more evident that the callback registration APIs >> exposed by the CPU hotplug core is poorly designed. >> >> What we need instead, is an elegant, well-defined and easy-to-use set of >> interfaces/APIs exposed by the core CPU hotplug code to the various >> subsystems. I don't think we should worry so much about the fact that >> we can't use the familiar get/put_online_cpus() in this type of callback >> registration scenario. We can introduce a sane set of APIs that work >> well in such situations and use them consistently. > >> For example, something like the code snippet shown below looks pretty >> neat to me: >> >> cpu_notifier_register_begin(); >> >> for_each_online_cpu(cpu) >> init_cpu(cpu); >> >> register_cpu_notifier(&foobar_cpu_notifier); >> >> cpu_notifier_register_done(); >> >> What do you think? > > I agree that it is cleaner for the callers as long as people understand > how to use them. Can you document them properly so that they know when > they need to use them instead of the familiar get/put_online_cpus()? >
Sure.. I had updated the documentation with the semantics introduced in this patchset, in patch 2:
http://thread.gmane.org/gmane.linux.kernel/1641638/focus=1641695
Similarly I'll keep the docs updated with these new APIs in v2 as well.
Thank you!
Regards, Srivatsa S. Bhat
|  |