[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1183669756.2604.117.camel@josh-work.beaverton.ibm.com>
Date: Thu, 05 Jul 2007 14:09:16 -0700
From: Josh Triplett <josht@...ux.vnet.ibm.com>
To: Al Viro <viro@....linux.org.uk>
Cc: Josh Triplett <josh@...edesktop.org>, linux-sparse@...r.kernel.org,
Linus Torvalds <torvalds@...ux-foundation.org>,
linux-kernel@...r.kernel.org
Subject: Re: [RFC] bloody mess with __attribute__() syntax
On Thu, 2007-07-05 at 21:08 +0100, Al Viro wrote:
> On Thu, Jul 05, 2007 at 12:35:53PM -0700, Josh Triplett wrote:
> > OK, that seems inconsistent with what you said before. You said that
> > T __attribute__((foo)) *v;
>
> ... in gcc.
>
> > gives you a foo-pointer-to-T. So shouldn't
> > int __attribute__((noderef)) *v;
> > give you a noderef-pointer-to-int?
>
> ... if we followed gcc rules.
Ah, OK.
> > However, noderef seems like a property of a pointer, hence why I
> > proposed the example I did. A warning should occur when you do
> > *(<noderef T *>v) to get a T, not when you do *(<* noderef T>v) to get a
> > noderef T.
>
> Nope. __noderef is a property of object being pointed to. Again,
> consider &p->x. It should not be int *. And it should not be
> an error. We want it to be int __noderef *.
>
> Semantics of noderef is simple: you should not access or modify the value
> of noderef object. That's all. int __noderef * is an absolutely normal
> pointer to such object. Think of __noderef as of a stronger variant of const.
OK. It hadn't occurred to me that "noderef int x" could have any useful
meaning on its own, but you've given a clear explanation of why it does,
which makes it meaningful to apply noderef to the pointer target rather
than the pointer. Thanks.
- Josh Triplett
-
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