xref: /xnu-10002.61.3/tests/vm/memorystatus_convert_limit_bytes.c (revision 0f4c859e951fba394238ab619495c4e1d54d0f34)
1*0f4c859eSApple OSS Distributions #include <sys/kern_memorystatus.h>
2*0f4c859eSApple OSS Distributions #include <sys/sysctl.h>
3*0f4c859eSApple OSS Distributions #include <sys/types.h>
4*0f4c859eSApple OSS Distributions #include <unistd.h>
5*0f4c859eSApple OSS Distributions 
6*0f4c859eSApple OSS Distributions #include <darwintest.h>
7*0f4c859eSApple OSS Distributions 
8*0f4c859eSApple OSS Distributions #define MAX_TASK_MEM "kern.max_task_pmem"
9*0f4c859eSApple OSS Distributions 
10*0f4c859eSApple OSS Distributions T_GLOBAL_META(
11*0f4c859eSApple OSS Distributions 	T_META_NAMESPACE("xnu.vm"),
12*0f4c859eSApple OSS Distributions 	T_META_RADAR_COMPONENT_NAME("xnu"),
13*0f4c859eSApple OSS Distributions 	T_META_RADAR_COMPONENT_VERSION("VM"),
14*0f4c859eSApple OSS Distributions 	T_META_ENABLED(!TARGET_OS_OSX));
15*0f4c859eSApple OSS Distributions 
16*0f4c859eSApple OSS Distributions T_DECL(memorystatus_convert_limit_bytes, "memorystatus_convert_limit_bytes default limit")
17*0f4c859eSApple OSS Distributions {
18*0f4c859eSApple OSS Distributions 	int ret;
19*0f4c859eSApple OSS Distributions 	int32_t max_task_pmem = 0;
20*0f4c859eSApple OSS Distributions 	size_t size_max_task_pmem = sizeof(max_task_pmem);
21*0f4c859eSApple OSS Distributions 
22*0f4c859eSApple OSS Distributions 	ret = sysctlbyname(MAX_TASK_MEM, &max_task_pmem, &size_max_task_pmem, NULL, 0);
23*0f4c859eSApple OSS Distributions 	T_ASSERT_POSIX_SUCCESS(ret, "call sysctlbyname to get max task physical memory.");
24*0f4c859eSApple OSS Distributions 
25*0f4c859eSApple OSS Distributions 	ret = memorystatus_control(MEMORYSTATUS_CMD_CONVERT_MEMLIMIT_MB, getpid(), (int32_t) -1, NULL, 0);
26*0f4c859eSApple OSS Distributions 	T_QUIET; T_ASSERT_POSIX_SUCCESS(ret, "memorystatus_control");
27*0f4c859eSApple OSS Distributions 	T_QUIET; T_ASSERT_EQ(ret, max_task_pmem, "default limit is converted correctly");
28*0f4c859eSApple OSS Distributions }
29