Re: [patch 2/7] CAN: Add PF_CAN core module

Oliver Hartkopp
2007-05-18T09:19:52Z

Hi Urs, Hello Paul,

i assume Paul refers to the can_rx_delete_all() function that adds each
receive list entry for rcu removal using the can_rx_delete RCU callback,
right?

So the idea would be to create a second RCU callback - e.g.
can_rx_delete_list() - that removes the complete list inside the RCU
callback?!?
The list removal would therefore be processed inside this new
can_rx_delete_list() in RCU context and not inside can_rx_delete_all().

@Paul: Was this your intention?

Best regards,
Oliver

Paul E. McKenney wrote:
> On Wed, May 16, 2007 at 04:51:02PM +0200, Urs Thuermann wrote:
>
>> This patch adds the CAN core functionality but no protocols or drivers.
>> No protocol implementations are included here. They come as separate
>> patches. Protocol numbers are already in include/linux/can.h.
>>
>
> Interesting! One question called out below -- why do call_rcu() on each
> piece of the struct dev_rcv_lists, instead of doing call_rcu() on the
> whole thing and having the RCU callback free up the pieces? Given that
> all the pieces are call_rcu()ed separately, there had better not be
> persistent pointers to the pieces, right?
>
> Doing it in one chunk would make the code a bit simpler and also reduce
> the RCU overhead a bit.
>
> Or am I missing something subtle here?
>
> Thanx, Paul
>
>
>