Re: [PATCH] Corrections to Documentation/rbtree.txt

From: Ian Abbott
Date: Wed Mar 26 2008 - 10:10:00 EST


On 25/03/08 18:24, Rob Landley wrote:
On Tuesday 25 March 2008 06:02:22 Ian Abbott wrote:
On 20/03/08 18:39, Rob Landley wrote:
On Thursday 20 March 2008 10:29:57 Ian Abbott wrote:
From: Ian Abbott <abbotti@xxxxxxxxx>

The description of the rb_entry() macro in Documentation/rbtree.txt
seems incorrect. This patch improves it (hopefully). Also I changed the
example code to call the previous 'my_search()' example instead of an
undefined 'mysearch()'.
I have no objection to the patch (and the my_search thing seems like an
obvious typo), but is there a reason to prefer rb_entry() rather than
container_of()? If so, the rationale might be a good thing to add to the
documentation...
I don't know the rationale, but all the code I can see uses rb_entry()
and not container_of().

Except container_of() works, which is a nice thing to know, and it already mentions rb_entry() as another way to do it. If someone could explain _why_ to use one over the other, that would be a good thing to add.

Let's see if Andrea Arcangeli can still remember the rationale from 9 years ago! :-)

container_of() works just as well, but _none_ of the existing code in the kernel uses it to access the container of the struct rb_node; they all use rb_entry(), including the example code in include/linux/rbtree.h.

Again, I don't care much either way, I just want to know what the point is of choosing one over the other that makes changing what's there worth bothering with. You're changing the documentation to hide the fact that rb_entry() is basically another name for container_of(), and this is supposed to be an improvement?

Personally I have no preference for rb_entry() over container_of(), but as all the code in the kernel uses rb_entry() it seems better if the examples in the documentation use it too.

--
-=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@xxxxxxxxx> )=-
-=( Tel: +44 (0)161 477 1898 FAX: +44 (0)161 718 3587 )=-
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/