|
|
|
@ -1,12 +1,14 @@
|
|
|
|
|
#define MAX(a,b) ((a) > (b) ? (a) : (b))
|
|
|
|
|
#define LOCK_NAME "ck_clh"
|
|
|
|
|
#define LOCK_DEFINE static ck_spinlock_hclh_t CK_CC_CACHELINE *glob_lock; \
|
|
|
|
|
static ck_spinlock_hclh_t CK_CC_CACHELINE *local_lock[CORES / 2]
|
|
|
|
|
|
|
|
|
|
#if CORES < 2
|
|
|
|
|
#undef CORES
|
|
|
|
|
#define CORES 2
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#define LOCK_NAME "ck_clh"
|
|
|
|
|
#define LOCK_DEFINE static ck_spinlock_hclh_t CK_CC_CACHELINE *glob_lock; \
|
|
|
|
|
static ck_spinlock_hclh_t CK_CC_CACHELINE *local_lock[CORES / 2]
|
|
|
|
|
|
|
|
|
|
#define LOCK_STATE ck_spinlock_hclh_t *na = malloc(MAX(sizeof(ck_spinlock_hclh_t), 64))
|
|
|
|
|
#define LOCK ck_spinlock_hclh_lock(&glob_lock, &local_lock[(core % CORES) / 2], na)
|
|
|
|
|
#define UNLOCK ck_spinlock_hclh_unlock(&na)
|
|
|
|
|