public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Martin Brulisauer" <martin@uceb.org>
To: Joshua MacDonald <jmacd@namesys.com>
Cc: neilb@cse.unsw.edu.au, linux-kernel@vger.kernel.org
Subject: Re: type safe lists (was Re: PATCH: type safe(r) list_entry repacement: generic_out_cast)
Date: Wed, 24 Jul 2002 09:39:53 +0200	[thread overview]
Message-ID: <3D3E75E9.28151.2A7FBB2@localhost> (raw)
In-Reply-To: <20020723220745.GD2090@reload.namesys.com>

On 24 Jul 2002, at 2:07, Joshua MacDonald wrote:
> 
> This may interest you.  We have written a type-safe doubly-linked list
> template which is used extensively in reiser4.  This is the kind of thing that
> some people like very much and some people hate, so I'll spare you the
> advocacy.
> 
> Comments are welcome.

Hi,

In my oppinion the attached template is a very good school 
example of how to excessively use C-style macros. But macros 
tend to make debugging difficult and as you know every new code 
has bugs (if it seems not to have one, then it has at least two 
which "correct" each other until you fix one of them ...), and finding 
the bugs is mainly done by others. 

And who needs a "type-save" template for such a trivial thing like a 
dubbly-linked-list? If this is not buttom-line knowledge one should 
not try to do kernel level programming. By the way: Multiline C 
Macros are depreached and will not be supported by a future 
version of gcc and as for today will generate a bunch of warnings.

I have one additional comment to the current implementation:
> 
> #define TS_LINK_TO_ITEM(ITEM_TYPE,LINK_NAME,LINK) \
> 	((ITEM_TYPE *)((char *)(LINK)-(unsigned long)(&((ITEM_TYPE *)0)->LINK_NAME)))

As long as your pointers are 32bit this seems to be ok. But on 
64bit implementations pointers are not (unsigned long) so this cast 
seems to be wrong.

Regards,
Martin


  reply	other threads:[~2002-07-24  7:37 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-07-23 11:28 PATCH: type safe(r) list_entry repacement: generic_out_cast Neil Brown
2002-07-23 11:47 ` Jakob Oestergaard
2002-07-23 22:07   ` type safe lists (was Re: PATCH: type safe(r) list_entry repacement: generic_out_cast) Joshua MacDonald
2002-07-24  7:39     ` Martin Brulisauer [this message]
2002-07-24  8:24       ` Anton Altaparmakov
2002-07-24  9:56       ` Joshua MacDonald
2002-07-24 10:50         ` Martin Brulisauer
2002-07-24 11:58           ` Jakob Oestergaard
2002-07-24 16:49             ` John Alvord
2002-07-25  5:29       ` Greg KH
2002-07-25  6:20         ` Roland Dreier
2002-09-04 13:48         ` Alexander Kellett
2002-09-04 14:27           ` DervishD
2002-07-24 12:22     ` Jakob Oestergaard
2002-07-24 12:40       ` Joshua MacDonald
2002-07-24 15:15         ` Hans Reiser
2002-07-23 12:42 ` PATCH: type safe(r) list_entry repacement: generic_out_cast Brian Gerst
2002-07-23 16:29 ` Linus Torvalds
2002-07-24  5:25   ` Thunder from the hill
2002-07-23 16:36 ` Christoph Hellwig
2002-07-23 22:58 ` Kevin O'Connor
2002-07-24 12:38 ` PATCH - mark 2: type safe(r) list_entry repacement: container_of Neil Brown
     [not found] <20020723114703.GM11081@unthought.net.suse.lists.linux.kernel>
     [not found] ` <3D3E75E9.28151.2A7FBB2@localhost.suse.lists.linux.kernel>
2002-07-24 13:23   ` type safe lists (was Re: PATCH: type safe(r) list_entry repacement: generic_out_cast) Andi Kleen
2002-07-24 21:00     ` Linus Torvalds
2002-07-24 23:39       ` Jamie Lokier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3D3E75E9.28151.2A7FBB2@localhost \
    --to=martin@uceb.org \
    --cc=jmacd@namesys.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=neilb@cse.unsw.edu.au \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox