/* * Copyright (c) 2002, Intel Corporation. All rights reserved. * Created by: bing.wei.liu REMOVE-THIS AT intel DOT com * This file is licensed under the GPL license. For the full content * of this license, see the COPYING file at the top level of this * source tree. * Test that pthread_key_create() * * shall create a thread-specific data key visible to all threaads in the process. Key values * provided by pthread_key_create() are opaque objects used to locate thread-specific data. * Although the same key value may be used by different threads, the values bound to the key * by pthread_setspecific() are maintained on a per-thread basis and persist for the life of * the calling thread. * * Steps: * 1. Define and create a key * 2. Verify that you can create many threads with the same key value * */ #include #include #include #include #include "posixtest.h" #define NUM_OF_THREADS 10 #define KEY_VALUE 1000 pthread_key_t keys[NUM_OF_THREADS]; int i; /* Thread function that sets the key to KEY_VALUE */ void *a_thread_func() { /* Set the key to KEY_VALUE */ if(pthread_setspecific(keys[i], (void *)(KEY_VALUE)) != 0) { printf("Error: pthread_setspecific() failed\n"); pthread_exit((void*)PTS_FAIL); } pthread_exit(0); } int main() { pthread_t new_th; void *value_ptr; /* Create a key */ for(i = 0;i