On Tue, Jul 12, 2005 at 11:53:06AM -0700, Sean Hefty wrote: > This fell out of the uCM connection ID discussion... > > There's an issue reporting events to userspace clients for an object that > a user may have destroyed. The problem exists with user verbs, but is > much more likely to be seen by a userspace CM client. To avoid reporting > events for a destroyed object, I think that something similar to the > following could be used from userspace: > > destroy() should set a state marking destruction and wait for a reference > count to go to 0 before transitioning to the kernel. The kernel code > should destroy the associated kernel object and then discard any unclaimed > events. > > get_event() should check the object state and discard the event if the > object is being destroyed. It should increment a reference count before > reporting any events. > > put_event() should decrement the reference count and unblock destroy if > the reference count goes to 0.
Just a little background. I had left out the user defined context variable because of the race condition, and I didn't try to solve the race condition on purpose. The reason is that I can see a few ways for the user to solve this themselves, entirely in userspace, depending on the threading model being used. For example, the above can be done entirely in userspace. I could be convinced otherwise, but that was the thinking. -Libor _______________________________________________ openib-general mailing list [email protected] http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
