X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=lib%2Fovs-rcu.c;h=b8f8bc481984384dbf2e3c69b191f64816cf3599;hb=8b8ef592521e32d0e32581bf39c5d2a5cd445977;hp=e0634cfab54cf18bf0e78b067b2855f9bd53feed;hpb=d2843eba6d939526eb3daef511099bed2d18dd2c;p=cascardo%2Fovs.git diff --git a/lib/ovs-rcu.c b/lib/ovs-rcu.c index e0634cfab..b8f8bc481 100644 --- a/lib/ovs-rcu.c +++ b/lib/ovs-rcu.c @@ -212,6 +212,19 @@ ovsrcu_synchronize(void) /* Registers 'function' to be called, passing 'aux' as argument, after the * next grace period. * + * The call is guaranteed to happen after the next time all participating + * threads have quiesced at least once, but there is no quarantee that all + * registered functions are called as early as possible, or that the functions + * registered by different threads would be called in the order the + * registrations took place. In particular, even if two threads provably + * register a function each in a specific order, the functions may still be + * called in the opposite order, depending on the timing of when the threads + * call ovsrcu_quiesce(), how many functions they postpone, and when the + * ovs-rcu thread happens to grab the functions to be called. + * + * All functions registered by a single thread are guaranteed to execute in the + * registering order, however. + * * This function is more conveniently called through the ovsrcu_postpone() * macro, which provides a type-safe way to allow 'function''s parameter to be * any pointer type. */