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