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


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to