[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 9 of 9] Do bitmap scan word-by-word before bit-by-bit
# HG changeset patch # User Brendan Cully <brendan@xxxxxxxxx> # Date 1240355511 25200 # Node ID 4a9831ea4a7d7bb95cd9584abe94e2fdc50f46f6 # Parent 0f1925415df0a4323d431085a9ee8956b8a95764 Do bitmap scan word-by-word before bit-by-bit. For sparse bitmaps and large domains this saves a lot of time. Signed-off-by: Brendan Cully <brendan@xxxxxxxxx> diff --git a/tools/libxc/xc_domain_save.c b/tools/libxc/xc_domain_save.c --- a/tools/libxc/xc_domain_save.c +++ b/tools/libxc/xc_domain_save.c @@ -99,6 +99,8 @@ #define BITMAP_SHIFT(_nr) ((_nr) % BITS_PER_LONG) +#define ORDER_LONG (sizeof(unsigned long) == 4 ? 5 : 6) + static inline int test_bit (int nr, volatile void * addr) { return (BITMAP_ENTRY(nr, addr) >> BITMAP_SHIFT(nr)) & 1; @@ -1158,6 +1160,14 @@ if ( completed ) { + /* for sparse bitmaps, word-by-word may save time */ + if ( !to_send[N >> ORDER_LONG] ) + { + /* incremented again in for loop! */ + N += BITS_PER_LONG - 1; + continue; + } + if ( !test_bit(n, to_send) ) continue; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |