#ifndef _STRINGS_H #define _STRINGS_H #include static inline __attribute__ (( always_inline )) int __constant_flsl ( unsigned long x ) { int r = 0; #if ULONG_MAX > 0xffffffff if ( x & 0xffffffff00000000UL ) { x >>= 32; r += 32; } #endif if ( x & 0xffff0000UL ) { x >>= 16; r += 16; } if ( x & 0xff00 ) { x >>= 8; r += 8; } if ( x & 0xf0 ) { x >>= 4; r += 4; } if ( x & 0xc ) { x >>= 2; r += 2; } if ( x & 0x2 ) { x >>= 1; r += 1; } if ( x & 0x1 ) { r += 1; } return r; } #define __constant_fls(x) __constant_flsl(x) /* We don't actually have these functions yet */ extern int __fls ( int x ); extern int __flsl ( long x ); #define flsl( x ) \ ( __builtin_constant_p ( x ) ? __constant_flsl ( x ) : __flsl ( x ) ) #define fls( x ) \ ( __builtin_constant_p ( x ) ? __constant_fls ( x ) : __fls ( x ) ) extern int strcasecmp ( const char *s1, const char *s2 ); #endif /* _STRINGS_H */