On Thu, 5 Jul 2007, Al Viro wrote: > > Now, that idiocy would be none of our concern, if not for the fact > that noderef and address_space() are definitely supposed to imitate > qualifiers. Absolutely. > Note that gcc rules for __attribute__() (and that's the only source > of rules we _have_ for the damn thing) clearly say that > int __user *p; > is the same thing as > int *__user p; Quick question: is there some reason why we have to honor the crazy gcc rules, and cannot try to convince gcc people that they are insane? That said: > Frankly, I would rather add a new primitive (__qualifier__) mirroring the > __attribute__, but acting like real qualifiers do. I'd be ok with that, but I would in many ways just prefer to keep the existing syntax, and just make the qualifiers be a separate _namespace_ within the attribute setup. We already really should be able to handle that perfectly well, since we look up the attribute names using the normal name lookup functions, which already has the notion of different namespaces. IOW, as far as I can tell, there's really no reason to add a "__qualifier__" handler, because it's not going to help us. Anything we can do with __qualifier__, we can already do with our __attribute__ parsing: what you suggest would involve having a new place for parsing __attributes__, and making the *current* qualifier-like attribute parsing trigger on "__qualifier__" instead. So what I'd suggest is to just have *both* cases trigger on __attribute__, but in the qualifier case we'd use NS_QUALIFIER to look up the attribute function, and in the non-qualifier case we'd use NS_ATTRIBUTE (right now we always use NS_KEYWORD, and that's probably bogus: we should put the attribute names in another namespace _anyway_). That would effectively mean that "__attribute__()" is just a way to escape into another set of namespaces. The advantage of that is that we could possibly support attributes in other places more naturally (ie we could have another namespace for attributes on statements or inline assembly, and we wouldn't ever introduce yet another keyword - the *name* in the attribute is the real keyword) Linus - To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html