1 #include "test/jemalloc_test.h" 2 #include "test/bench.h" 3 4 static void 5 mallctl_short(void) { 6 const char *version; 7 size_t sz = sizeof(version); 8 int err = mallctl("version", &version, &sz, NULL, 0); 9 assert_d_eq(err, 0, "mallctl failure"); 10 } 11 12 size_t mib_short[1]; 13 14 static void 15 mallctlbymib_short(void) { 16 size_t miblen = sizeof(mib_short)/sizeof(mib_short[0]); 17 const char *version; 18 size_t sz = sizeof(version); 19 int err = mallctlbymib(mib_short, miblen, &version, &sz, NULL, 0); 20 assert_d_eq(err, 0, "mallctlbymib failure"); 21 } 22 23 TEST_BEGIN(test_mallctl_vs_mallctlbymib_short) { 24 size_t miblen = sizeof(mib_short)/sizeof(mib_short[0]); 25 26 int err = mallctlnametomib("version", mib_short, &miblen); 27 assert_d_eq(err, 0, "mallctlnametomib failure"); 28 compare_funcs(10*1000*1000, 10*1000*1000, "mallctl_short", 29 mallctl_short, "mallctlbymib_short", mallctlbymib_short); 30 } 31 TEST_END 32 33 static void 34 mallctl_long(void) { 35 uint64_t nmalloc; 36 size_t sz = sizeof(nmalloc); 37 int err = mallctl("stats.arenas.0.bins.0.nmalloc", &nmalloc, &sz, NULL, 38 0); 39 assert_d_eq(err, 0, "mallctl failure"); 40 } 41 42 size_t mib_long[6]; 43 44 static void 45 mallctlbymib_long(void) { 46 size_t miblen = sizeof(mib_long)/sizeof(mib_long[0]); 47 uint64_t nmalloc; 48 size_t sz = sizeof(nmalloc); 49 int err = mallctlbymib(mib_long, miblen, &nmalloc, &sz, NULL, 0); 50 assert_d_eq(err, 0, "mallctlbymib failure"); 51 } 52 53 TEST_BEGIN(test_mallctl_vs_mallctlbymib_long) { 54 /* 55 * We want to use the longest mallctl we have; that needs stats support 56 * to be allowed. 57 */ 58 test_skip_if(!config_stats); 59 60 size_t miblen = sizeof(mib_long)/sizeof(mib_long[0]); 61 int err = mallctlnametomib("stats.arenas.0.bins.0.nmalloc", mib_long, 62 &miblen); 63 assert_d_eq(err, 0, "mallctlnametomib failure"); 64 compare_funcs(10*1000*1000, 10*1000*1000, "mallctl_long", 65 mallctl_long, "mallctlbymib_long", mallctlbymib_long); 66 } 67 TEST_END 68 69 int 70 main(void) { 71 return test_no_reentrancy( 72 test_mallctl_vs_mallctlbymib_short, 73 test_mallctl_vs_mallctlbymib_long); 74 } 75