Update comment.

This commit is contained in:
Patrick Pelissier committed 2018-09-19 22:22:48 +02:00
1 parent 1ada22462f
commit b799725bef
1 file changed
+5 -3
+5 -3
View File
@@ -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);