1 1.1 christos #include "test/jemalloc_test.h" 2 1.1 christos 3 1.1 christos TEST_BEGIN(test_update_slab_size) { 4 1.1 christos sc_data_t data; 5 1.1 christos memset(&data, 0, sizeof(data)); 6 1.1 christos sc_data_init(&data); 7 1.1 christos sc_t *tiny = &data.sc[0]; 8 1.1 christos size_t tiny_size = (ZU(1) << tiny->lg_base) 9 1.1 christos + (ZU(tiny->ndelta) << tiny->lg_delta); 10 1.1 christos size_t pgs_too_big = (tiny_size * BITMAP_MAXBITS + PAGE - 1) / PAGE + 1; 11 1.1 christos sc_data_update_slab_size(&data, tiny_size, tiny_size, (int)pgs_too_big); 12 1.1 christos expect_zu_lt((size_t)tiny->pgs, pgs_too_big, "Allowed excessive pages"); 13 1.1 christos 14 1.1 christos sc_data_update_slab_size(&data, 1, 10 * PAGE, 1); 15 1.1 christos for (int i = 0; i < data.nbins; i++) { 16 1.1 christos sc_t *sc = &data.sc[i]; 17 1.1 christos size_t reg_size = (ZU(1) << sc->lg_base) 18 1.1 christos + (ZU(sc->ndelta) << sc->lg_delta); 19 1.1 christos if (reg_size <= PAGE) { 20 1.1 christos expect_d_eq(sc->pgs, 1, "Ignored valid page size hint"); 21 1.1 christos } else { 22 1.1 christos expect_d_gt(sc->pgs, 1, 23 1.1 christos "Allowed invalid page size hint"); 24 1.1 christos } 25 1.1 christos } 26 1.1 christos } 27 1.1 christos TEST_END 28 1.1 christos 29 1.1 christos int 30 1.1 christos main(void) { 31 1.1 christos return test( 32 1.1 christos test_update_slab_size); 33 1.1 christos } 34