On Sat, 20 Nov 2004, David Brownell wrote:
>
> I thought I'd poke at the "sparse" lock checking stuff too,
> and as I half expected, it didn't like the way all the HCDs
> temporarily yield their spinlocks while calling out to URB
> completion handlers. But a fix to remove the warnings is
> simple, just use a construct something like this to annotate
> those functions that call usb_hcd_giveback_urb():
>
> #ifdef __CHECKER__
> #define __yields(x) __attribute__((context(1,1)))
> #else
> #define __yields(x)
> #endif
Please don't do it that way. At the very least, don't rely on internal
sparse stuff that may change some day. What you really want is just
/* Shorthand for "release and reaquire" lock x */
#define __yields(x) __releases(x) __acquires(x)
which is a lot more readable, doesn't need any __CHECKER__ checks, and
actually tells the user what "__yields()" means (even without the comment
it's half-way readable: comments are good, but even better is code that
you can follow even without them. The combination of both is best).
Right now the lock information is totally ignored by sparse, but hey, I
may want to fix that some day. When I do, the syntax for specifying the
lock may well change, and I'll have to fix up all the annotations, but for
now the lock-specification is act least there for human-readability.
Also, considering that there hopefully aren't that many of these things,
maybe it's easier to just write the thing out every time, ie
int my_hcd_function(...)
__releases(ehci->lock)
__acquires(ehci->lock)
{
...
}
since the "__yields()" shorthand really doesn't buy you all that much
unless it's a really common operation.
But regardless, I really would not want people to use sparse-internal
syntax for things like this.
Linus
-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel