Update comment.
This commit is contained in:
1 parent
1ada22462f
commit
b799725bef
1 file changed
+5
-3
+5
-3
@@ -65,7 +65,7 @@ typedef struct genint_s {
|
|||||||
|
|
||||||
#define GENINT_CONTRACT(s) do { \
|
#define GENINT_CONTRACT(s) do { \
|
||||||
assert (s != NULL); \
|
assert (s != NULL); \
|
||||||
assert (s->n > 0 && s->n <= GENINT_LIMBSIZE * GENINT_LIMBSIZE); \
|
assert (s->n > 0 && s->n <= GENINT_MAX_ALLOC); \
|
||||||
assert ((s->max+1) * GENINT_LIMBSIZE >= s->n); \
|
assert ((s->max+1) * GENINT_LIMBSIZE >= s->n); \
|
||||||
assert (s->data != NULL); \
|
assert (s->data != NULL); \
|
||||||
} while (0)
|
} while (0)
|
||||||
@@ -79,10 +79,12 @@ typedef struct genint_s {
|
|||||||
#define GENINT_ABA_CPT 32
|
#define GENINT_ABA_CPT 32
|
||||||
#define GENINT_ABA_CPT_T uint32_t
|
#define GENINT_ABA_CPT_T uint32_t
|
||||||
|
|
||||||
|
// Set the bit i of master
|
||||||
#define GENINT_MASTER_SET(master, i) \
|
#define GENINT_MASTER_SET(master, i) \
|
||||||
((((master)& (~((GENINT_ONE<< GENINT_ABA_CPT)-1))) | (GENINT_ONE << (GENINT_LIMBSIZE - 1 - i))) \
|
((((master)& (~((GENINT_ONE<< GENINT_ABA_CPT)-1))) | (GENINT_ONE << (GENINT_LIMBSIZE - 1 - i))) \
|
||||||
|((GENINT_ABA_CPT_T)((master) + 1)))
|
|((GENINT_ABA_CPT_T)((master) + 1)))
|
||||||
|
|
||||||
|
// Reset the bit i of master
|
||||||
#define GENINT_MASTER_RESET(master, i) \
|
#define GENINT_MASTER_RESET(master, i) \
|
||||||
(((master) & (~((GENINT_ONE<< GENINT_ABA_CPT)-1)) & ~(GENINT_ONE << (GENINT_LIMBSIZE - 1 - i))) \
|
(((master) & (~((GENINT_ONE<< GENINT_ABA_CPT)-1)) & ~(GENINT_ONE << (GENINT_LIMBSIZE - 1 - i))) \
|
||||||
|((GENINT_ABA_CPT_T)((master) + 1)))
|
|((GENINT_ABA_CPT_T)((master) + 1)))
|
||||||
@@ -121,7 +123,7 @@ static inline size_t genint_size(genint_t s)
|
|||||||
return s->n;
|
return s->n;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Typical case: one CAS per pop.
|
// For a typical case, the amortized cost is one CAS per pop.
|
||||||
static inline unsigned int genint_pop(genint_t s)
|
static inline unsigned int genint_pop(genint_t s)
|
||||||
{
|
{
|
||||||
GENINT_CONTRACT(s);
|
GENINT_CONTRACT(s);
|
||||||
@@ -179,7 +181,7 @@ static inline unsigned int genint_pop(genint_t s)
|
|||||||
return GENINT_ERROR; // No more resource available
|
return GENINT_ERROR; // No more resource available
|
||||||
}
|
}
|
||||||
|
|
||||||
// Typical usage: one CAS per push
|
// For a typical case, the amortized cost is one CAS per pop.
|
||||||
static inline void genint_push(genint_t s, unsigned int n)
|
static inline void genint_push(genint_t s, unsigned int n)
|
||||||
{
|
{
|
||||||
GENINT_CONTRACT(s);
|
GENINT_CONTRACT(s);
|
||||||
|
|||||||
Reference in new issue
Block a user