xref: /aosp_15_r20/external/jemalloc_new/test/unit/prof_idump.c (revision 1208bc7e437ced7eb82efac44ba17e3beba411da)
1*1208bc7eSAndroid Build Coastguard Worker #include "test/jemalloc_test.h"
2*1208bc7eSAndroid Build Coastguard Worker 
3*1208bc7eSAndroid Build Coastguard Worker static bool did_prof_dump_open;
4*1208bc7eSAndroid Build Coastguard Worker 
5*1208bc7eSAndroid Build Coastguard Worker static int
prof_dump_open_intercept(bool propagate_err,const char * filename)6*1208bc7eSAndroid Build Coastguard Worker prof_dump_open_intercept(bool propagate_err, const char *filename) {
7*1208bc7eSAndroid Build Coastguard Worker 	int fd;
8*1208bc7eSAndroid Build Coastguard Worker 
9*1208bc7eSAndroid Build Coastguard Worker 	did_prof_dump_open = true;
10*1208bc7eSAndroid Build Coastguard Worker 
11*1208bc7eSAndroid Build Coastguard Worker 	fd = open("/dev/null", O_WRONLY);
12*1208bc7eSAndroid Build Coastguard Worker 	assert_d_ne(fd, -1, "Unexpected open() failure");
13*1208bc7eSAndroid Build Coastguard Worker 
14*1208bc7eSAndroid Build Coastguard Worker 	return fd;
15*1208bc7eSAndroid Build Coastguard Worker }
16*1208bc7eSAndroid Build Coastguard Worker 
TEST_BEGIN(test_idump)17*1208bc7eSAndroid Build Coastguard Worker TEST_BEGIN(test_idump) {
18*1208bc7eSAndroid Build Coastguard Worker 	bool active;
19*1208bc7eSAndroid Build Coastguard Worker 	void *p;
20*1208bc7eSAndroid Build Coastguard Worker 
21*1208bc7eSAndroid Build Coastguard Worker 	test_skip_if(!config_prof);
22*1208bc7eSAndroid Build Coastguard Worker 
23*1208bc7eSAndroid Build Coastguard Worker 	active = true;
24*1208bc7eSAndroid Build Coastguard Worker 	assert_d_eq(mallctl("prof.active", NULL, NULL, (void *)&active,
25*1208bc7eSAndroid Build Coastguard Worker 	    sizeof(active)), 0,
26*1208bc7eSAndroid Build Coastguard Worker 	    "Unexpected mallctl failure while activating profiling");
27*1208bc7eSAndroid Build Coastguard Worker 
28*1208bc7eSAndroid Build Coastguard Worker 	prof_dump_open = prof_dump_open_intercept;
29*1208bc7eSAndroid Build Coastguard Worker 
30*1208bc7eSAndroid Build Coastguard Worker 	did_prof_dump_open = false;
31*1208bc7eSAndroid Build Coastguard Worker 	p = mallocx(1, 0);
32*1208bc7eSAndroid Build Coastguard Worker 	assert_ptr_not_null(p, "Unexpected mallocx() failure");
33*1208bc7eSAndroid Build Coastguard Worker 	dallocx(p, 0);
34*1208bc7eSAndroid Build Coastguard Worker 	assert_true(did_prof_dump_open, "Expected a profile dump");
35*1208bc7eSAndroid Build Coastguard Worker }
36*1208bc7eSAndroid Build Coastguard Worker TEST_END
37*1208bc7eSAndroid Build Coastguard Worker 
38*1208bc7eSAndroid Build Coastguard Worker int
main(void)39*1208bc7eSAndroid Build Coastguard Worker main(void) {
40*1208bc7eSAndroid Build Coastguard Worker 	return test(
41*1208bc7eSAndroid Build Coastguard Worker 	    test_idump);
42*1208bc7eSAndroid Build Coastguard Worker }
43