In article <[EMAIL PROTECTED]> you wrote:
> No need for a callin routine, you can get this for free as part of
> normal scheduling.  The sequence goes :-
>
> if (use_count == 0) {
>   module_unregister();
>   wait_for_at_least_one_schedule_on_every_cpu();
>   if (use_count != 0) {
>     module_register();        /* lost the unregister race */
>   }
>   else {
>     /* nobody can enter the module now */
>     module_release_resources();
>     unlink_module_from_list();
>     wait_for_at_least_one_schedule_on_every_cpu();
>     free_module_storage();
>   }
> }
>
> wait_for_at_least_one_schedule_on_every_cpu() prevents the next
> operation until at least one schedule has been executed on every cpu.
> Whether this is done as a call back or a separate kernel thread that
> schedules itself on every cpu or the current process scheduling itself
> on every cpu is an implementation detail.  All that matters is that any
> other cpu that might have been accessing the module has gone through
> schedule and therefore is no longer accessing the module's data or
> code.

You just reinvented the read-copy-update model
(http://www.rdrop.com/users/paulmck/rclock/intro/rclock_intro.html)...

The mail proposing that locking model for module unloading is not yet
in the arvhices, sorry.

        Christoph

P.S. Weren't you Cc:'ed on that mail?
-- 
Of course it doesn't work. We've performed a software upgrade.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to