From 492479dccc3e3de0c92abf8280576c1773f13f9c Mon Sep 17 00:00:00 2001 From: Thomas Schwinge Date: Mon, 18 Jul 2011 10:14:01 +0200 Subject: open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c: New. --- .../pthread_key_create_reuse.c | 48 ++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c (limited to 'open_issues/libpthread_pthread_key_create_reuse') diff --git a/open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c b/open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c new file mode 100644 index 00000000..f7f5874e --- /dev/null +++ b/open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c @@ -0,0 +1,48 @@ +#include +#include +#include + +#define DEBUG + +void del(void *x __attribute__((unused))) +{ +} + +void work(int val) +{ + pthread_key_t key1; + pthread_key_t key2; + +#ifdef DEBUG + printf("work/%d: start\n", val); +#endif + assert(pthread_key_create(&key1, &del) == 0); + assert(pthread_key_create(&key2, &del) == 0); +#ifdef DEBUG + printf("work/%d: pre-setspecific: %p,%p\n", val, pthread_getspecific(key1), pthread_getspecific(key2)); +#else + assert(pthread_getspecific(key1) == NULL); + assert(pthread_getspecific(key2) == NULL); +#endif + assert(pthread_setspecific(key1, (void *)(0x100 + val)) == 0); + assert(pthread_setspecific(key2, (void *)(0x200 + val)) == 0); +#ifdef DEBUG + printf("work/%d: post-setspecific: %p,%p\n", val, pthread_getspecific(key1), pthread_getspecific(key2)); +#else + assert(pthread_getspecific(key1) == (void *)(0x100 + val)); + assert(pthread_getspecific(key2) == (void *)(0x200 + val)); +#endif + assert(pthread_key_delete(key1) == 0); + assert(pthread_key_delete(key2) == 0); +} + +int main() +{ + int i; + + for (i = 0; i < 8; ++i) { + work(i + 1); + } + + return 0; +} -- cgit v1.2.3