]>
git.saurik.com Git - apple/libpthread.git/blob - tests/tsd.c
d20dcf156db087695ffd019c9d157897d52732dc
3 #include <sys/sysctl.h>
5 #include "darwintest_defaults.h"
7 static void *ptr
= NULL
;
9 static void destructor(void *value
)
14 static void *thread(void *param
)
16 pthread_key_t key
= *(pthread_key_t
*)param
;
17 T_ASSERT_POSIX_ZERO(pthread_setspecific(key
, (void *)0x12345678), NULL
);
18 void *value
= pthread_getspecific(key
);
20 T_ASSERT_POSIX_ZERO(pthread_key_create(&key
, NULL
), NULL
);
21 T_ASSERT_POSIX_ZERO(pthread_setspecific(key
, (void *)0x55555555), NULL
);
27 T_META_ALL_VALID_ARCHS(YES
))
31 T_ASSERT_POSIX_ZERO(pthread_key_create(&key
, destructor
), NULL
);
32 T_LOG("key = %ld", key
);
35 T_ASSERT_POSIX_ZERO(pthread_create(&p
, NULL
, thread
, &key
), NULL
);
38 T_ASSERT_POSIX_ZERO(pthread_join(p
, &value
), NULL
);
39 T_LOG("value = %p; ptr = %p\n", value
, ptr
);
41 T_EXPECT_EQ(ptr
, value
, NULL
);
43 T_ASSERT_POSIX_ZERO(pthread_key_delete(key
), NULL
);
49 static uint32_t activecpu
;
52 size_t s
= sizeof(activecpu
);
53 sysctlbyname("hw.activecpu", &n
, &s
, NULL
, 0);
59 T_DECL(cpuid
, "cpu id", T_META_ALL_VALID_ARCHS(YES
))
64 if (pthread_cpu_number_np(&cpu_id
)) {
65 T_FAIL("Should not fail to get CPU id");
68 T_ASSERT_LE(cpu_id
, get_ncpu(), "Got a valid CPU id");