mirror of https://gitee.com/openkylin/libvirt.git
build: remove all gnulib bit manipulation modules
We're using gnulib to get ffs, ffsl, rotl32, count_one_bits, and count_leading_zeros. Except for rotl32 they can all be replaced with gcc/clangs builtins. rotl32 is a one-line trivial function. Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
5be0d28b3e
commit
d5d6dbcfb5
|
@ -22,7 +22,6 @@ accept
|
|||
areadlink
|
||||
base64
|
||||
bind
|
||||
bitrotate
|
||||
byteswap
|
||||
c-ctype
|
||||
c-strcase
|
||||
|
@ -34,8 +33,6 @@ clock-time
|
|||
close
|
||||
connect
|
||||
configmake
|
||||
count-leading-zeros
|
||||
count-one-bits
|
||||
dirname-lgpl
|
||||
environ
|
||||
execinfo
|
||||
|
@ -43,8 +40,6 @@ fclose
|
|||
fcntl
|
||||
fcntl-h
|
||||
fdatasync
|
||||
ffs
|
||||
ffsl
|
||||
fnmatch
|
||||
fsync
|
||||
getaddrinfo
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
|
||||
#include <config.h>
|
||||
|
||||
#include <strings.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "capabilities.h"
|
||||
|
@ -1152,7 +1151,7 @@ virCapabilitiesFormatHostXML(virCapsHostPtr host,
|
|||
virBufferAddLit(buf, "<power_management>\n");
|
||||
virBufferAdjustIndent(buf, 2);
|
||||
while (pm) {
|
||||
int bit = ffs(pm) - 1;
|
||||
int bit = __builtin_ffs(pm) - 1;
|
||||
virBufferAsprintf(buf, "<%s/>\n",
|
||||
virCapsHostPMTargetTypeToString(bit));
|
||||
pm &= ~(1U << bit);
|
||||
|
|
|
@ -45,7 +45,6 @@
|
|||
#include "virstoragefile.h"
|
||||
#include "virfile.h"
|
||||
#include "virbitmap.h"
|
||||
#include "count-one-bits.h"
|
||||
#include "secret_conf.h"
|
||||
#include "netdev_vport_profile_conf.h"
|
||||
#include "netdev_bandwidth_conf.h"
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
#include "internal.h"
|
||||
#include "virbitmap.h"
|
||||
#include "virbuffer.h"
|
||||
#include "count-one-bits.h"
|
||||
#include "datatypes.h"
|
||||
#include "domain_conf.h"
|
||||
#include "virlog.h"
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#if STATIC_ANALYSIS
|
||||
# undef NDEBUG /* Don't let a prior NDEBUG definition cause trouble. */
|
||||
|
@ -63,7 +64,6 @@
|
|||
|
||||
#include "c-strcase.h"
|
||||
#include "ignore-value.h"
|
||||
#include "count-leading-zeros.h"
|
||||
|
||||
/* String equality tests, suggested by Jim Meyering. */
|
||||
#define STREQ(a, b) (strcmp(a, b) == 0)
|
||||
|
@ -493,6 +493,12 @@
|
|||
} while (0)
|
||||
|
||||
|
||||
/* Count leading zeros in an unsigned int.
|
||||
*
|
||||
* Wrapper needed as __builtin_clz is undefined if value is zero
|
||||
*/
|
||||
#define VIR_CLZ(value) \
|
||||
(value ? __builtin_clz(value) : (8 * sizeof(unsigned)))
|
||||
|
||||
/* divide value by size, rounding up */
|
||||
#define VIR_DIV_UP(value, size) (((value) + (size) - 1) / (size))
|
||||
|
@ -504,7 +510,7 @@
|
|||
* for 0 or number more than 2^31 (for 32bit unsigned int). */
|
||||
#define VIR_ROUND_UP_POWER_OF_TWO(value) \
|
||||
((value) > 0 && (value) <= 1U << (sizeof(unsigned int) * 8 - 1) ? \
|
||||
1U << (sizeof(unsigned int) * 8 - count_leading_zeros((value) - 1)) : 0)
|
||||
1U << (sizeof(unsigned int) * 8 - VIR_CLZ((value) - 1)) : 0)
|
||||
|
||||
|
||||
/* Specific error values for use in forwarding programs such as
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
#include "virconf.h"
|
||||
#include "viralloc.h"
|
||||
#include "viruuid.h"
|
||||
#include "count-one-bits.h"
|
||||
#include "xenxs_private.h"
|
||||
#include "domain_conf.h"
|
||||
#include "virstring.h"
|
||||
|
|
|
@ -27,7 +27,6 @@
|
|||
#include "viralloc.h"
|
||||
#include "virbuffer.h"
|
||||
#include "c-ctype.h"
|
||||
#include "count-one-bits.h"
|
||||
#include "virstring.h"
|
||||
#include "virutil.h"
|
||||
#include "virerror.h"
|
||||
|
@ -1028,7 +1027,7 @@ virBitmapNextSetBit(virBitmapPtr bitmap,
|
|||
if (bits == 0)
|
||||
return -1;
|
||||
|
||||
return ffsl(bits) - 1 + nl * VIR_BITMAP_BITS_PER_UNIT;
|
||||
return __builtin_ffsl(bits) - 1 + nl * VIR_BITMAP_BITS_PER_UNIT;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1127,7 +1126,7 @@ virBitmapNextClearBit(virBitmapPtr bitmap,
|
|||
if (bits == 0)
|
||||
return -1;
|
||||
|
||||
return ffsl(bits) - 1 + nl * VIR_BITMAP_BITS_PER_UNIT;
|
||||
return __builtin_ffsl(bits) - 1 + nl * VIR_BITMAP_BITS_PER_UNIT;
|
||||
}
|
||||
|
||||
|
||||
|
@ -1144,7 +1143,7 @@ virBitmapCountBits(virBitmapPtr bitmap)
|
|||
size_t ret = 0;
|
||||
|
||||
for (i = 0; i < bitmap->map_len; i++)
|
||||
ret += count_one_bits_l(bitmap->map[i]);
|
||||
ret += __builtin_popcountl(bitmap->map[i]);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -339,7 +339,7 @@ static int
|
|||
virCgroupV2GetAnyController(virCgroupPtr group)
|
||||
{
|
||||
/* The least significant bit is position 1. */
|
||||
return ffs(group->unified.controllers) - 1;
|
||||
return __builtin_ffs(group->unified.controllers) - 1;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -28,7 +28,11 @@
|
|||
#include <config.h>
|
||||
|
||||
#include "virhashcode.h"
|
||||
#include "bitrotate.h"
|
||||
|
||||
static uint32_t rotl32(uint32_t x, int8_t r)
|
||||
{
|
||||
return (x << r) | (x >> (32 - r));
|
||||
}
|
||||
|
||||
/* slower than original but handles platforms that do only aligned reads */
|
||||
static inline uint32_t getblock(const uint8_t *p, int i)
|
||||
|
|
|
@ -44,7 +44,6 @@
|
|||
#include "virhostcpupriv.h"
|
||||
#include "physmem.h"
|
||||
#include "virerror.h"
|
||||
#include "count-one-bits.h"
|
||||
#include "intprops.h"
|
||||
#include "virarch.h"
|
||||
#include "virfile.h"
|
||||
|
|
|
@ -37,7 +37,6 @@
|
|||
#include "virhostmem.h"
|
||||
#include "physmem.h"
|
||||
#include "virerror.h"
|
||||
#include "count-one-bits.h"
|
||||
#include "virarch.h"
|
||||
#include "virfile.h"
|
||||
#include "virtypedparam.h"
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
|
||||
#include <inttypes.h>
|
||||
#include <math.h>
|
||||
#include <strings.h>
|
||||
#include <time.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
|
@ -32,7 +31,6 @@
|
|||
|
||||
#include "virrandom.h"
|
||||
#include "virthread.h"
|
||||
#include "count-one-bits.h"
|
||||
#include "virutil.h"
|
||||
#include "virerror.h"
|
||||
#include "virfile.h"
|
||||
|
@ -97,7 +95,7 @@ double virRandom(void)
|
|||
uint32_t virRandomInt(uint32_t max)
|
||||
{
|
||||
if ((max & (max - 1)) == 0)
|
||||
return virRandomBits(ffs(max) - 1);
|
||||
return virRandomBits(__builtin_ffs(max) - 1);
|
||||
|
||||
double val = virRandom();
|
||||
return val * max;
|
||||
|
|
|
@ -555,7 +555,7 @@ vshCmddefGetData(const vshCmdDef *cmd, uint64_t *opts_need_arg,
|
|||
return NULL;
|
||||
|
||||
/* Grab least-significant set bit */
|
||||
i = ffsl(*opts_need_arg) - 1;
|
||||
i = __builtin_ffsl(*opts_need_arg) - 1;
|
||||
opt = &cmd->opts[i];
|
||||
if (opt->type != VSH_OT_ARGV)
|
||||
*opts_need_arg &= ~(1ULL << i);
|
||||
|
|
Loading…
Reference in New Issue