]> git.saurik.com Git - apple/libpthread.git/blobdiff - tests/tsd.c
libpthread-454.40.3.tar.gz
[apple/libpthread.git] / tests / tsd.c
index 259816d4cb1d5ba6071d8666e68d426b8659b95b..d20dcf156db087695ffd019c9d157897d52732dc 100644 (file)
@@ -1,5 +1,6 @@
 #include <pthread.h>
 #include <stdio.h>
+#include <sys/sysctl.h>
 
 #include "darwintest_defaults.h"
 
@@ -41,3 +42,28 @@ T_DECL(tsd, "tsd",
 
        T_ASSERT_POSIX_ZERO(pthread_key_delete(key), NULL);
 }
+
+static uint32_t
+get_ncpu(void)
+{
+       static uint32_t activecpu;
+       if (!activecpu) {
+               uint32_t n;
+               size_t s = sizeof(activecpu);
+               sysctlbyname("hw.activecpu", &n, &s, NULL, 0);
+               activecpu = n;
+       }
+       return activecpu;
+}
+
+T_DECL(cpuid, "cpu id", T_META_ALL_VALID_ARCHS(YES))
+{
+       pthread_t child;
+
+       size_t cpu_id;
+       if (pthread_cpu_number_np(&cpu_id)) {
+               T_FAIL("Should not fail to get CPU id");
+       }
+
+       T_ASSERT_LE(cpu_id, get_ncpu(), "Got a valid CPU id");
+}