Messages in this thread | | | Date | Thu, 16 Jan 2003 19:15:56 +0100 | From | Roman Zippel <> | Subject | Re: [RFC] Migrating net/sched to new module interface |
| |
Hi,
Werner Almesberger wrote:
> If there's a really nasty case, where you absolutely can't > afford to sleep, you need to change the service to split > "deregister" into: > > - prepare_deregister (like "deregister", but reversible) > - commit_deregister > - undo_deregister
You can simplify this. All you need are the following simple functions:
- void register(); - void unregister(); - int is_registered(); - void inc_usecount(); - void dec_usecount(); - int get_usecount();
It's important to understand that the registered state and the usecount are completely independent. As soon as the object is unregistered and the usecount is zero, the object can be freed, but it doesn't matter in which order it happens. The problem is now that we are very limited how we can use these functions. We can only unregister an object after the usecount became zero, although it's also possible to first unregister the object and then wait for the usecount. Only when we can do the latter is it possible to safely force the removal of the object.
bye, Roman
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |