#ifndef _STRINGS_H #define _STRINGS_H FILE_LICENCE ( GPL2_OR_LATER ); #include <limits.h> #include <string.h> 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; } /* We don't actually have these functions yet */ extern int __flsl ( long x ); #define flsl( x ) \ ( __builtin_constant_p ( x ) ? __constant_flsl ( x ) : __flsl ( x ) ) #define fls( x ) flsl ( x ) extern int strcasecmp ( const char *s1, const char *s2 ); static inline __attribute__ (( always_inline )) void bcopy ( const void *src, void *dest, size_t n ) { memmove ( dest, src, n ); } static inline __attribute__ (( always_inline )) void bzero ( void *s, size_t n ) { memset ( s, 0, n ); } #endif /* _STRINGS_H */