[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] libxc: Define xc_ffs{8, 16, 32, 64} functions. Use them.
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1231233279 0 # Node ID f6b92526e9162f0ea2183903cedee7394da86cfd # Parent d77f66f89c0413eb468d9716913cc18515989531 libxc: Define xc_ffs{8,16,32,64} functions. Use them. Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> --- tools/libxc/xc_pagetab.c | 3 +-- tools/libxc/xc_private.c | 27 +++++++++++++++++++++++++++ tools/libxc/xc_private.h | 5 +++++ tools/libxc/xc_ptrace.c | 5 ++--- tools/libxc/xg_private.c | 1 - 5 files changed, 35 insertions(+), 6 deletions(-) diff -r d77f66f89c04 -r f6b92526e916 tools/libxc/xc_pagetab.c --- a/tools/libxc/xc_pagetab.c Mon Jan 05 11:55:24 2009 +0000 +++ b/tools/libxc/xc_pagetab.c Tue Jan 06 09:14:39 2009 +0000 @@ -4,7 +4,6 @@ * Function to translate virtual to physical addresses. */ #include "xc_private.h" -#include <strings.h> #define CR0_PG 0x80000000 #define CR4_PAE 0x20 @@ -77,7 +76,7 @@ unsigned long xc_translate_foreign_addre /* Walk the pagetables */ for (level = pt_levels; level > 0; level--) { - paddr += ((virt & mask) >> (ffsll(mask) - 1)) * size; + paddr += ((virt & mask) >> (xc_ffs64(mask) - 1)) * size; map = xc_map_foreign_range(xc_handle, dom, PAGE_SIZE, PROT_READ, paddr >>PAGE_SHIFT); if (!map) diff -r d77f66f89c04 -r f6b92526e916 tools/libxc/xc_private.c --- a/tools/libxc/xc_private.c Mon Jan 05 11:55:24 2009 +0000 +++ b/tools/libxc/xc_private.c Tue Jan 06 09:14:39 2009 +0000 @@ -639,6 +639,33 @@ int write_exact(int fd, const void *data return 0; } +int xc_ffs8(uint8_t x) +{ + int i; + for ( i = 0; i < 8; i++ ) + if ( x & (1u << i) ) + return i+1; + return 0; +} + +int xc_ffs16(uint16_t x) +{ + uint8_t h = x>>8, l = x; + return l ? xc_ffs8(l) : h ? xc_ffs8(h) + 8 : 0; +} + +int xc_ffs32(uint32_t x) +{ + uint16_t h = x>>16, l = x; + return l ? xc_ffs16(l) : h ? xc_ffs16(h) + 16 : 0; +} + +int xc_ffs64(uint64_t x) +{ + uint32_t h = x>>32, l = x; + return l ? xc_ffs32(l) : h ? xc_ffs32(h) + 32 : 0; +} + /* * Local variables: * mode: C diff -r d77f66f89c04 -r f6b92526e916 tools/libxc/xc_private.h --- a/tools/libxc/xc_private.h Mon Jan 05 11:55:24 2009 +0000 +++ b/tools/libxc/xc_private.h Tue Jan 06 09:14:39 2009 +0000 @@ -218,4 +218,9 @@ int read_exact(int fd, void *data, size_ int read_exact(int fd, void *data, size_t size); int write_exact(int fd, const void *data, size_t size); +int xc_ffs8(uint8_t x); +int xc_ffs16(uint16_t x); +int xc_ffs32(uint32_t x); +int xc_ffs64(uint64_t x); + #endif /* __XC_PRIVATE_H__ */ diff -r d77f66f89c04 -r f6b92526e916 tools/libxc/xc_ptrace.c --- a/tools/libxc/xc_ptrace.c Mon Jan 05 11:55:24 2009 +0000 +++ b/tools/libxc/xc_ptrace.c Tue Jan 06 09:14:39 2009 +0000 @@ -44,8 +44,7 @@ static uint64_t static uint64_t regs_valid; static vcpu_guest_context_any_t ctxt[MAX_VIRT_CPUS]; -extern int ffsll(long long int); -#define FOREACH_CPU(cpumap, i) for ( cpumap = online_cpumap; (i = ffsll(cpumap)); cpumap &= ~(1 << (index - 1)) ) +#define FOREACH_CPU(cpumap, i) for ( cpumap = online_cpumap; (i = xc_ffs64(cpumap)); cpumap &= ~(1 << (index - 1)) ) static int fetch_regs(int xc_handle, int cpu, int *online) @@ -136,7 +135,7 @@ online_vcpus_changed(uint64_t cpumap) uint64_t changed_cpumap = cpumap ^ online_cpumap; int index; - while ( (index = ffsll(changed_cpumap)) ) { + while ( (index = xc_ffs64(changed_cpumap)) ) { if ( cpumap & (1 << (index - 1)) ) { if (handlers.td_create) handlers.td_create(index - 1); diff -r d77f66f89c04 -r f6b92526e916 tools/libxc/xg_private.c --- a/tools/libxc/xg_private.c Mon Jan 05 11:55:24 2009 +0000 +++ b/tools/libxc/xg_private.c Tue Jan 06 09:14:39 2009 +0000 @@ -7,7 +7,6 @@ #include <stdlib.h> #include <unistd.h> #include <zlib.h> -#include <strings.h> #include <malloc.h> #include "xg_private.h" _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |