On Wed, 19 Sep 2007 15:07:55 -0700 (PDT) David Miller <[EMAIL PROTECTED]> wrote:
> From: Stephen Hemminger <[EMAIL PROTECTED]> > Date: Wed, 19 Sep 2007 14:59:00 -0700 > ... > > > +static int niu_wait_bits_clear_mac(struct niu *np, unsigned long reg, > > > u64 bits, > > > + int limit, int delay) > > > +{ > > > + BUILD_BUG_ON(limit <= 0 || delay < 0); > > > > There is no way compiler can evaluate limit or delay. > > Check the callers, they all pass contant values. GCC is not as smart as you think... Try the following test: -------------------- #include <stdio.h> #define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) #define ENODEV -10 static int niu_wait_bits_clear_mac(void *np, unsigned long reg, int limit, int delay) { BUILD_BUG_ON(limit <= 0 || delay < 0); if (limit < 0) return -ENODEV; while (limit > 0) sleep(delay); return 0; } int main(int argc, char **argv) { printf("start\n"); niu_wait_bits_clear_mac(NULL, 0, 10, 1); niu_wait_bits_clear_mac(NULL, 0, -1, 0); niu_wait_bits_clear_mac(NULL, 0, 0, -1); return 0; } - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html