Merge pull request #7 from abelmathew/master

CK_MD_VMA_BITS
ck_pring
Samy Al Bahra 12 years ago
commit f2dfd828c3

@ -63,8 +63,8 @@ enum ck_bag_allocation_strategy {
};
/*
* max: max n_entries per block
* bytes: sizeof(ck_bag_block) + sizeof(flex. array member)
* max: max n_entries per block
* bytes: sizeof(ck_bag_block) + sizeof(flex. array member)
* + inline allocator overhead
*/
struct ck_bag_block_info {
@ -75,7 +75,7 @@ struct ck_bag_block_info {
/*
* Determine whether pointer packing should be enabled.
*/
#if defined(CK_BAG_PP) && defined(CK_MD_POINTER_PACK_ENABLE)
#if defined(CK_MD_POINTER_PACK_ENABLE) && defined(CK_MD_VMA_BITS)
#define CK_BAG_PP
#endif
@ -114,7 +114,7 @@ struct ck_bag_iterator {
typedef struct ck_bag_iterator ck_bag_iterator_t;
#ifdef CK_BAG_PP
#define CK_BAG_BLOCK_ENTRIES_MASK ((uintptr_t)0xFFFF << 48)
#define CK_BAG_BLOCK_ENTRIES_MASK (~(uintptr_t)0 << CK_MD_VMA_BITS)
#endif
CK_CC_INLINE static struct ck_bag_block *
@ -140,7 +140,7 @@ ck_bag_block_count(struct ck_bag_block *block)
{
#ifdef CK_BAG_PP
return (uintptr_t)ck_pr_load_ptr(&block->next.ptr) >> 48;
return (uintptr_t)ck_pr_load_ptr(&block->next.ptr) >> CK_MD_VMA_BITS;
#else
return (uintptr_t)ck_pr_load_ptr(&block->next.n_entries);
#endif

@ -37,7 +37,7 @@
#define CK_BAG_PAGESIZE CK_MD_PAGESIZE
#ifdef CK_BAG_PP
#define CK_BAG_MAX_N_ENTRIES (1 << 12)
#define CK_BAG_MAX_N_ENTRIES (1 << ((sizeof(void *) * 8) - CK_MD_VMA_BITS))
#endif
static struct ck_malloc allocator;
@ -164,7 +164,7 @@ ck_bag_put_spmc(struct ck_bag *bag, void *entry)
ck_pr_fence_store();
#ifdef CK_BAG_PP
next = ((uintptr_t)n_entries_block << 48);
next = ((uintptr_t)n_entries_block << CK_MD_VMA_BITS);
#endif
@ -284,7 +284,7 @@ found:
next_ptr = (uintptr_t)(void *)ck_bag_block_next(copy->next.ptr);
#ifdef CK_BAG_PP
copy->next.ptr = (void *)(((uintptr_t)n_entries << 48) | next_ptr);
copy->next.ptr = (void *)(((uintptr_t)n_entries << CK_MD_VMA_BITS) | next_ptr);
#else
copy->next.n_entries = n_entries;
copy->next.ptr = (struct ck_bag_block *)next_ptr;

Loading…
Cancel
Save