Browse Source

port r14814 from 1.2: Add missing key destructions

Samuel Thibault 10 years ago
parent
commit
fc56be2e35
3 changed files with 9 additions and 2 deletions
  1. 3 1
      src/core/sched_ctx.c
  2. 4 1
      src/core/workers.c
  3. 2 0
      src/drivers/mp_common/sink_common.c

+ 3 - 1
src/core/sched_ctx.c

@@ -904,6 +904,8 @@ void _starpu_delete_all_sched_ctxs()
 		STARPU_PTHREAD_RWLOCK_UNLOCK(&changing_ctx_mutex[i]);
 		STARPU_PTHREAD_RWLOCK_DESTROY(&changing_ctx_mutex[i]);
 	}
+
+	STARPU_PTHREAD_KEY_DELETE(sched_ctx_key);
 	return;
 }
 
@@ -1143,7 +1145,7 @@ int _starpu_nworkers_able_to_execute_task(struct starpu_task *task, struct _star
 /* unused sched_ctx have the id STARPU_NMAX_SCHED_CTXS */
 void _starpu_init_all_sched_ctxs(struct _starpu_machine_config *config)
 {
-	starpu_pthread_key_create(&sched_ctx_key, NULL);
+	STARPU_PTHREAD_KEY_CREATE(&sched_ctx_key, NULL);
 
 	unsigned i;
 	for(i = 0; i < STARPU_NMAX_SCHED_CTXS; i++)

+ 4 - 1
src/core/workers.c

@@ -570,7 +570,7 @@ void _starpu_worker_start(struct _starpu_worker *worker, unsigned fut_key, unsig
 }
 #endif
 
-void _starpu_driver_start(struct _starpu_worker *worker, unsigned fut_key, unsigned sync)
+void _starpu_driver_start(struct _starpu_worker *worker, unsigned fut_key, unsigned sync STARPU_ATTRIBUTE_UNUSED)
 {
 	(void) fut_key;
 	int devid = worker->devid;
@@ -1525,6 +1525,9 @@ void starpu_shutdown(void)
 #endif
 	_starpu_close_debug_logfile();
 
+	STARPU_PTHREAD_KEY_DELETE(worker_key);
+	STARPU_PTHREAD_KEY_DELETE(worker_set_key);
+
 	STARPU_PTHREAD_MUTEX_LOCK(&init_mutex);
 	initialized = UNINITIALIZED;
 	/* Let someone else that wants to initialize it again do it */

+ 2 - 0
src/drivers/mp_common/sink_common.c

@@ -308,6 +308,8 @@ void _starpu_sink_common_worker(void)
 		}
 	}
 
+	STARPU_PTHREAD_KEY_DELETE(worker_key);
+
 	/* Deinitialize the node and release it */
 	_starpu_mp_common_node_destroy(node);