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