Include <strings.h> for ffs().

ffs() is in <strings.h> although bsd compatible systems have it in
<string.h> already.  ffs() is used in omap1.c, omap2.c, omap_i2c.c,
bt-sdp.c.  These uses can be replaced with clz32() but ffs is more
available.  Problem was spotted by malc.

Make host-utils.h formatting more consistent.


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5708 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
balrog 2008-11-12 17:18:41 +00:00
parent be3512610b
commit c89068455d
2 changed files with 25 additions and 24 deletions

View file

@ -116,7 +116,7 @@ static always_inline int clo64(uint64_t val)
return clz64(~val); return clz64(~val);
} }
static always_inline int ctz32 (uint32_t val) static always_inline int ctz32(uint32_t val)
{ {
#if QEMU_GNUC_PREREQ(3, 4) #if QEMU_GNUC_PREREQ(3, 4)
if (val) if (val)
@ -128,39 +128,39 @@ static always_inline int ctz32 (uint32_t val)
cnt = 0; cnt = 0;
if (!(val & 0x0000FFFFUL)) { if (!(val & 0x0000FFFFUL)) {
cnt += 16; cnt += 16;
val >>= 16; val >>= 16;
} }
if (!(val & 0x000000FFUL)) { if (!(val & 0x000000FFUL)) {
cnt += 8; cnt += 8;
val >>= 8; val >>= 8;
} }
if (!(val & 0x0000000FUL)) { if (!(val & 0x0000000FUL)) {
cnt += 4; cnt += 4;
val >>= 4; val >>= 4;
} }
if (!(val & 0x00000003UL)) { if (!(val & 0x00000003UL)) {
cnt += 2; cnt += 2;
val >>= 2; val >>= 2;
} }
if (!(val & 0x00000001UL)) { if (!(val & 0x00000001UL)) {
cnt++; cnt++;
val >>= 1; val >>= 1;
} }
if (!(val & 0x00000001UL)) { if (!(val & 0x00000001UL)) {
cnt++; cnt++;
} }
return cnt; return cnt;
#endif #endif
} }
static always_inline int cto32 (uint32_t val) static always_inline int cto32(uint32_t val)
{ {
return ctz32(~val); return ctz32(~val);
} }
static always_inline int ctz64 (uint64_t val) static always_inline int ctz64(uint64_t val)
{ {
#if QEMU_GNUC_PREREQ(3, 4) #if QEMU_GNUC_PREREQ(3, 4)
if (val) if (val)
@ -180,12 +180,12 @@ static always_inline int ctz64 (uint64_t val)
#endif #endif
} }
static always_inline int cto64 (uint64_t val) static always_inline int cto64(uint64_t val)
{ {
return ctz64(~val); return ctz64(~val);
} }
static always_inline int ctpop8 (uint8_t val) static always_inline int ctpop8(uint8_t val)
{ {
val = (val & 0x55) + ((val >> 1) & 0x55); val = (val & 0x55) + ((val >> 1) & 0x55);
val = (val & 0x33) + ((val >> 2) & 0x33); val = (val & 0x33) + ((val >> 2) & 0x33);
@ -194,7 +194,7 @@ static always_inline int ctpop8 (uint8_t val)
return val; return val;
} }
static always_inline int ctpop16 (uint16_t val) static always_inline int ctpop16(uint16_t val)
{ {
val = (val & 0x5555) + ((val >> 1) & 0x5555); val = (val & 0x5555) + ((val >> 1) & 0x5555);
val = (val & 0x3333) + ((val >> 2) & 0x3333); val = (val & 0x3333) + ((val >> 2) & 0x3333);
@ -204,7 +204,7 @@ static always_inline int ctpop16 (uint16_t val)
return val; return val;
} }
static always_inline int ctpop32 (uint32_t val) static always_inline int ctpop32(uint32_t val)
{ {
#if QEMU_GNUC_PREREQ(3, 4) #if QEMU_GNUC_PREREQ(3, 4)
return __builtin_popcount(val); return __builtin_popcount(val);
@ -219,7 +219,7 @@ static always_inline int ctpop32 (uint32_t val)
#endif #endif
} }
static always_inline int ctpop64 (uint64_t val) static always_inline int ctpop64(uint64_t val)
{ {
#if QEMU_GNUC_PREREQ(3, 4) #if QEMU_GNUC_PREREQ(3, 4)
return __builtin_popcountll(val); return __builtin_popcountll(val);

View file

@ -7,6 +7,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdarg.h> #include <stdarg.h>
#include <string.h> #include <string.h>
#include <strings.h>
#include <inttypes.h> #include <inttypes.h>
#include <limits.h> #include <limits.h>
#include <time.h> #include <time.h>