mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-04-14 14:41:42 +03:00
73 lines
2 KiB
C
73 lines
2 KiB
C
#include "test/jemalloc_test.h"
|
|
#include "test/bench.h"
|
|
|
|
static void
|
|
mallctl_short(void) {
|
|
const char *version;
|
|
size_t sz = sizeof(version);
|
|
int err = mallctl("version", &version, &sz, NULL, 0);
|
|
assert_d_eq(err, 0, "mallctl failure");
|
|
}
|
|
|
|
size_t mib_short[1];
|
|
|
|
static void
|
|
mallctlbymib_short(void) {
|
|
size_t miblen = sizeof(mib_short) / sizeof(mib_short[0]);
|
|
const char *version;
|
|
size_t sz = sizeof(version);
|
|
int err = mallctlbymib(mib_short, miblen, &version, &sz, NULL, 0);
|
|
assert_d_eq(err, 0, "mallctlbymib failure");
|
|
}
|
|
|
|
TEST_BEGIN(test_mallctl_vs_mallctlbymib_short) {
|
|
size_t miblen = sizeof(mib_short) / sizeof(mib_short[0]);
|
|
|
|
int err = mallctlnametomib("version", mib_short, &miblen);
|
|
assert_d_eq(err, 0, "mallctlnametomib failure");
|
|
compare_funcs(10 * 1000 * 1000, 10 * 1000 * 1000, "mallctl_short",
|
|
mallctl_short, "mallctlbymib_short", mallctlbymib_short);
|
|
}
|
|
TEST_END
|
|
|
|
static void
|
|
mallctl_long(void) {
|
|
uint64_t nmalloc;
|
|
size_t sz = sizeof(nmalloc);
|
|
int err = mallctl(
|
|
"stats.arenas.0.bins.0.nmalloc", &nmalloc, &sz, NULL, 0);
|
|
assert_d_eq(err, 0, "mallctl failure");
|
|
}
|
|
|
|
size_t mib_long[6];
|
|
|
|
static void
|
|
mallctlbymib_long(void) {
|
|
size_t miblen = sizeof(mib_long) / sizeof(mib_long[0]);
|
|
uint64_t nmalloc;
|
|
size_t sz = sizeof(nmalloc);
|
|
int err = mallctlbymib(mib_long, miblen, &nmalloc, &sz, NULL, 0);
|
|
assert_d_eq(err, 0, "mallctlbymib failure");
|
|
}
|
|
|
|
TEST_BEGIN(test_mallctl_vs_mallctlbymib_long) {
|
|
/*
|
|
* We want to use the longest mallctl we have; that needs stats support
|
|
* to be allowed.
|
|
*/
|
|
test_skip_if(!config_stats);
|
|
|
|
size_t miblen = sizeof(mib_long) / sizeof(mib_long[0]);
|
|
int err = mallctlnametomib(
|
|
"stats.arenas.0.bins.0.nmalloc", mib_long, &miblen);
|
|
assert_d_eq(err, 0, "mallctlnametomib failure");
|
|
compare_funcs(10 * 1000 * 1000, 10 * 1000 * 1000, "mallctl_long",
|
|
mallctl_long, "mallctlbymib_long", mallctlbymib_long);
|
|
}
|
|
TEST_END
|
|
|
|
int
|
|
main(void) {
|
|
return test_no_reentrancy(test_mallctl_vs_mallctlbymib_short,
|
|
test_mallctl_vs_mallctlbymib_long);
|
|
}
|