2004-10-07 21:07:00

by Blaisorblade

[permalink] [raw]
Subject: [patch 1/1] use offsetof for rb_entry


Use, in the rb_entry definition, the offsetof macro instead of reinventing the
wheel.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[email protected]>
---

linux-2.6.9-current-paolo/include/linux/rbtree.h | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)

diff -puN include/linux/rbtree.h~use-offsetof-rb_entry include/linux/rbtree.h
--- linux-2.6.9-current/include/linux/rbtree.h~use-offsetof-rb_entry 2004-10-07 16:11:27.590555976 +0200
+++ linux-2.6.9-current-paolo/include/linux/rbtree.h 2004-10-07 16:11:27.592555672 +0200
@@ -114,7 +114,7 @@ struct rb_root

#define RB_ROOT (struct rb_root) { NULL, }
#define rb_entry(ptr, type, member) \
- ((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
+ ((type *)((char *)(ptr) - offsetof(type, member)))

extern void rb_insert_color(struct rb_node *, struct rb_root *);
extern void rb_erase(struct rb_node *, struct rb_root *);
_


2004-10-07 21:30:37

by Christoph Hellwig

[permalink] [raw]
Subject: Re: [patch 1/1] use offsetof for rb_entry

On Thu, Oct 07, 2004 at 07:53:42PM +0200, [email protected] wrote:
>
> Use, in the rb_entry definition, the offsetof macro instead of reinventing the
> wheel.

Or just use container_of - which has the additional benefit of beeing typesafe.