Test and fix tcache ID recycling.
This commit is contained in:
parent
1cb181ed63
commit
9e561e8d3f
@ -451,7 +451,7 @@ tcaches_create(tsd_t *tsd, unsigned *r_ind)
|
|||||||
elm = tcaches_avail;
|
elm = tcaches_avail;
|
||||||
tcaches_avail = tcaches_avail->next;
|
tcaches_avail = tcaches_avail->next;
|
||||||
elm->tcache = tcache;
|
elm->tcache = tcache;
|
||||||
*r_ind = (elm - tcaches) / sizeof(tcaches_t);
|
*r_ind = elm - tcaches;
|
||||||
} else {
|
} else {
|
||||||
elm = &tcaches[tcaches_past];
|
elm = &tcaches[tcaches_past];
|
||||||
elm->tcache = tcache;
|
elm->tcache = tcache;
|
||||||
|
@ -258,6 +258,18 @@ TEST_BEGIN(test_tcache)
|
|||||||
"Unexpected mallctl() failure, i=%u", i);
|
"Unexpected mallctl() failure, i=%u", i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Exercise tcache ID recycling. */
|
||||||
|
for (i = 0; i < NTCACHES; i++) {
|
||||||
|
assert_d_eq(mallctl("tcache.destroy", NULL, NULL, &tis[i],
|
||||||
|
sizeof(unsigned)), 0, "Unexpected mallctl() failure, i=%u",
|
||||||
|
i);
|
||||||
|
}
|
||||||
|
for (i = 0; i < NTCACHES; i++) {
|
||||||
|
sz = sizeof(unsigned);
|
||||||
|
assert_d_eq(mallctl("tcache.create", &tis[i], &sz, NULL, 0), 0,
|
||||||
|
"Unexpected mallctl() failure, i=%u", i);
|
||||||
|
}
|
||||||
|
|
||||||
/* Flush empty tcaches. */
|
/* Flush empty tcaches. */
|
||||||
for (i = 0; i < NTCACHES; i++) {
|
for (i = 0; i < NTCACHES; i++) {
|
||||||
assert_d_eq(mallctl("tcache.flush", NULL, NULL, &tis[i],
|
assert_d_eq(mallctl("tcache.flush", NULL, NULL, &tis[i],
|
||||||
|
Loading…
Reference in New Issue
Block a user