]> git.saurik.com Git - apple/xnu.git/blobdiff - libsyscall/mach/host.c
xnu-4570.71.2.tar.gz
[apple/xnu.git] / libsyscall / mach / host.c
index a781a09ad999760d06af6437bb498967a2156683..651d148d8721b5596bf66749c27064ade9d80402 100644 (file)
@@ -46,16 +46,33 @@ kern_return_t
 host_get_multiuser_config_flags(host_t host __unused,
                                                                uint32_t *multiuser_flags)
 {
+#if TARGET_OS_EMBEDDED
+       volatile uint32_t *multiuser_flag_address = (volatile uint32_t *)(uintptr_t)(_COMM_PAGE_MULTIUSER_CONFIG);
+       *multiuser_flags = *multiuser_flag_address;
+       return KERN_SUCCESS;
+#else
        (void)multiuser_flags;
        return KERN_NOT_SUPPORTED;
+#endif
 }
 
 kern_return_t
 host_check_multiuser_mode(host_t host __unused,
                                                  uint32_t *multiuser_mode)
 {
+#if TARGET_OS_EMBEDDED
+       uint32_t multiuser_flags;
+       kern_return_t kr;
+
+       kr = host_get_multiuser_config_flags(host, &multiuser_flags);
+       if (kr != KERN_SUCCESS)
+               return kr;
+       *multiuser_mode = (multiuser_flags & kIsMultiUserDevice) == kIsMultiUserDevice;
+       return KERN_SUCCESS;
+#else
        (void)multiuser_mode;
        return KERN_NOT_SUPPORTED;
+#endif
 }
 
 extern kern_return_t