diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2011-07-19 02:06:05 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2011-07-19 02:06:05 +0200 |
commit | fef03b756ac50e55bdf109dd21699d4fe7ace269 (patch) | |
tree | 142f3a409b6106672a9c0029c9bec992594496e2 /open_issues/libpthread_pthread_key_create_reuse | |
parent | 6c61549db82df89057d358146a4c6de22e953af6 (diff) | |
parent | 6084d6bd82f859261fdaf5aef7f9d0729c80718f (diff) |
Merge branch 'master' of flubber:~hurd-web/hurd-web
Diffstat (limited to 'open_issues/libpthread_pthread_key_create_reuse')
-rw-r--r-- | open_issues/libpthread_pthread_key_create_reuse/pthread_key_create_reuse.c | 48 |
1 files changed, 48 insertions, 0 deletions
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 <pthread.h> +#include <stdio.h> +#include <assert.h> + +#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; +} |