On 12/21/2017 05:39 PM, Paul E.
McKenney wrote:
Hi Paul,I left it out on purpose because the call in tiny is a little different rcutiny.h: static inline void kfree_call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) { call_rcu(head, func); } tree.c: void kfree_call_rcu(struct rcu_head *head, void (*func)(struct rcu_head *rcu)) { __call_rcu(head, func, rcu_state_p, -1, 1); } EXPORT_SYMBOL_GPL(kfree_call_rcu); If we want the code to be exactly same I can create a lazy version for tiny as well. However, I don not know where to move kfree_call_rcu() from it's current home in rcutiny.h though. Any thoughts ?I might be missing something subtle here, but in case I am not, my suggestion is to simply rename rcutiny.h's kfree_call_rcu() and otherwise leave it as is. If you want to update the type of the second argument, which got missed back in the day, there is always this: static inline void call_rcu_lazy(struct rcu_head *head, rcu_callback_t func) { call_rcu(head, func); } The reason that Tiny RCU doesn't handle laziness specially is because Tree RCU's handling of laziness is a big no-op on the single CPU systems on which Tiny RCU runs. So Tiny RCU need do nothing special to support laziness. Thanx, Paul I can not just change the name as __kfree_call_rcu macro calls kfree_call_rcu(). I have made tiny version of kfree_call_rcu() call rcu_call_lazy() which calls call_rcu(). As far as the type is concerned, my bad, I cut and posted from an older release. Latest code is already using the typedef. Shoaib |