Move relevant index into the ehooks_t itself.

It's always passed into the ehooks; keeping it colocated lets us avoid passing
the arena everywhere.
This commit is contained in:
David Goldblatt
2019-12-13 10:09:57 -08:00
committed by David Goldblatt
parent c792f3e4ab
commit 57fe99d4be
5 changed files with 19 additions and 10 deletions

View File

@@ -3,7 +3,7 @@
static inline unsigned
base_ind_get(const base_t *base) {
return base->ind;
return ehooks_ind_get(&base->ehooks);
}
static inline bool

View File

@@ -20,9 +20,6 @@ struct base_block_s {
};
struct base_s {
/* Associated arena's index within the arenas array. */
unsigned ind;
/*
* User-configurable extent hook functions.
*/

View File

@@ -20,6 +20,12 @@ extern const extent_hooks_t ehooks_default_extent_hooks;
typedef struct ehooks_s ehooks_t;
struct ehooks_s {
/*
* The user-visible id that goes with the ehooks (i.e. that of the base
* they're a part of, the associated arena's index within the arenas
* array).
*/
unsigned ind;
/* Logically an extent_hooks_t *. */
atomic_p_t ptr;
};
@@ -80,7 +86,12 @@ ehooks_post_reentrancy(tsdn_t *tsdn) {
}
/* Beginning of the public API. */
void ehooks_init(ehooks_t *ehooks, extent_hooks_t *extent_hooks);
void ehooks_init(ehooks_t *ehooks, extent_hooks_t *extent_hooks, unsigned ind);
static inline unsigned
ehooks_ind_get(const ehooks_t *ehooks) {
return ehooks->ind;
}
static inline void
ehooks_set_extent_hooks_ptr(ehooks_t *ehooks, extent_hooks_t *extent_hooks) {