This is xnu-11215.1.10. See this file in:
#include <darwintest.h>
#include "../bsd/sys/proc_info.h"
#include "../libsyscall/wrappers/libproc/libproc.h"
#include <stdio.h>
#include <unistd.h>
#include <TargetConditionals.h>
T_GLOBAL_META(T_META_RUN_CONCURRENTLY(true));
T_DECL(proc_udata_info, "Get and set a proc udata token", T_META_TAG_VM_PREFERRED){
uint64_t token = mach_absolute_time();
proc_info_udata_t udata;
int ret;
udata = token;
ret = proc_udata_info(getpid(), PROC_UDATA_INFO_SET, &udata, sizeof(udata));
#if !TARGET_OS_OSX
T_WITH_ERRNO;
T_ASSERT_EQ_INT(ret, -1, "proc_udata_info PROC_UDATA_INFO_SET returns error on non-supported platforms");
T_SKIP("Remaining tests are only supported on platforms with CONFIG_PROC_UDATA_STORAGE configured");
#endif
T_WITH_ERRNO;
T_ASSERT_EQ_INT(ret, 0, "proc_udata_info PROC_UDATA_INFO_SET");
T_LOG("udata set to %#llx", udata);
bzero(&udata, sizeof(udata));
ret = proc_udata_info(getpid(), PROC_UDATA_INFO_GET, &udata, sizeof(udata));
T_WITH_ERRNO;
T_ASSERT_EQ_INT(ret, 0, "proc_udata_info PROC_UDATA_INFO_GET");
T_ASSERT_EQ_ULLONG(token, udata, "proc_udata_info(): retrieved value matches token");
ret = proc_udata_info(getpid(), PROC_UDATA_INFO_SET, &udata, sizeof(uint32_t));
T_WITH_ERRNO;
T_ASSERT_EQ_INT(ret, -1, "proc_udata_info PROC_UDATA_INFO_SET with invalid size returned -1");
T_ASSERT_EQ_INT(errno, EINVAL, "proc_udata_info PROC_UDATA_INFO_SET with invalid size returned EINVAL");
ret = proc_udata_info(getppid(), PROC_UDATA_INFO_GET, &udata, sizeof(udata));
T_WITH_ERRNO;
T_ASSERT_EQ_INT(ret, -1, "proc_udata_info PROC_UDATA_INFO_GET returned -1 on attempt against non-self pid");
T_ASSERT_EQ_INT(errno, EACCES, "proc_udata_info PROC_UDATA_INFO_GET set errno to EACCES on attempt against non-self pid");
ret = proc_udata_info(getppid(), PROC_UDATA_INFO_SET, &udata, sizeof(udata));
T_WITH_ERRNO;
T_ASSERT_EQ_INT(ret, -1, "proc_udata_info PROC_UDATA_INFO_SET returned -1 on attempt against non-self pid");
T_ASSERT_EQ_INT(errno, EACCES, "proc_udata_info PROC_UDATA_INFO_SET set errno to EACCES on attempt against non-self pid");
}