+#endif /* !TARGET_OS_SIMULATOR */
+
+#endif /* !(TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR) */
+
+int
+proc_set_no_smt(void)
+{
+ if (__process_policy(PROC_POLICY_SCOPE_PROCESS, PROC_POLICY_ACTION_APPLY, PROC_POLICY_NO_SMT, 0, NULL, getpid(), (uint64_t)0) == -1) {
+ return errno;
+ }
+ return 0;
+}
+
+int
+proc_setthread_no_smt(void)
+{
+ extern uint64_t __thread_selfid(void);
+ if (__process_policy(PROC_POLICY_SCOPE_THREAD, PROC_POLICY_ACTION_APPLY, PROC_POLICY_NO_SMT, 0, NULL, 0, __thread_selfid()) == -1) {
+ return errno;
+ }
+ return 0;
+}
+
+int
+proc_set_csm(uint32_t flags)
+{
+ const uint32_t mask = PROC_CSM_ALL | PROC_CSM_TECS | PROC_CSM_NOSMT;
+ if ((flags & ~mask) != 0) {
+ return EINVAL;
+ }
+
+ if (flags & (PROC_CSM_NOSMT | PROC_CSM_ALL)) {
+ if (__process_policy(PROC_POLICY_SCOPE_PROCESS, PROC_POLICY_ACTION_APPLY, PROC_POLICY_NO_SMT, 0, NULL, getpid(), (uint64_t)0) == -1) {
+ return errno;
+ }
+ }
+
+ if (flags & (PROC_CSM_TECS | PROC_CSM_ALL)) {
+ if (__process_policy(PROC_POLICY_SCOPE_PROCESS, PROC_POLICY_ACTION_APPLY, PROC_POLICY_TECS, 0, NULL, getpid(), (uint64_t)0) == -1) {
+ return errno;
+ }
+ }