lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <200803251324.08769.rob@landley.net>
Date:	Tue, 25 Mar 2008 13:24:08 -0500
From:	Rob Landley <rob@...dley.net>
To:	Ian Abbott <abbotti@....co.uk>
Cc:	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] Corrections to Documentation/rbtree.txt

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@....co.uk>
> >>
> >> 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.

> The only rationale I can think of is that it 
> abstracts away from the nodes being embedded in the data a little bit.

If I wanted abstraction for its own sake I'd be using C++ to implement a 
microkernel.  I would also be certifiably insane.

> (But not by much - in particular, an implementation of rb trees that
> stored data in the node explicitly would only need a single parameter in
> its rb_entry() accessor.  I like the approach taken in
> include/linux/elevator.h that uses the rb_entry() macro to create a
> specialized accessor macro (rb_entry_rq()) with a single parameter.

And this can't be done with container_of()?

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?

Rob
-- 
"One of my most productive days was throwing away 1000 lines of code."
  - Ken Thompson.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ