Convert the isc_hp API to use the globally available isc_tid_v instead
of locally defined tid_v. This should solve most of the problems on
machines with many number of cores / CPUs.
(cherry picked from commit
bea333f7c92c3ffa1eec25e19e86d0487457365b)
/* Maximum number of retired objects per thread */
static int isc__hp_max_retired = HP_MAX_THREADS * HP_MAX_HPS;
-#define TID_UNKNOWN -1
-
-static atomic_int_fast32_t tid_v_base = ATOMIC_VAR_INIT(0);
-
-ISC_THREAD_LOCAL int tid_v = TID_UNKNOWN;
-
typedef struct retirelist {
int size;
uintptr_t *list;
};
static inline int
-tid() {
- if (tid_v == TID_UNKNOWN) {
- tid_v = atomic_fetch_add(&tid_v_base, 1);
- REQUIRE(tid_v < isc__hp_max_threads);
- }
-
- return (tid_v);
+tid(void) {
+ return (isc_tid_v);
}
void