Re: [PATCH] Move kfree_call_rcu() to slab_common.c

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 12/21/2017 05:39 PM, Paul E. McKenney wrote:
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

Hi 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

[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]
  Powered by Linux