diff options
Diffstat (limited to 'tools/perf/util/thread.c')
| -rw-r--r-- | tools/perf/util/thread.c | 13 | 
1 files changed, 13 insertions, 0 deletions
diff --git a/tools/perf/util/thread.c b/tools/perf/util/thread.c index 0b166404c5c3..fe5e6991ae4b 100644 --- a/tools/perf/util/thread.c +++ b/tools/perf/util/thread.c @@ -80,6 +80,15 @@ err_thread:  	return NULL;  } +static void (*thread__priv_destructor)(void *priv); + +void thread__set_priv_destructor(void (*destructor)(void *priv)) +{ +	assert(thread__priv_destructor == NULL); + +	thread__priv_destructor = destructor; +} +  void thread__delete(struct thread *thread)  {  	struct namespaces *namespaces, *tmp_namespaces; @@ -112,6 +121,10 @@ void thread__delete(struct thread *thread)  	exit_rwsem(thread__namespaces_lock(thread));  	exit_rwsem(thread__comm_lock(thread));  	thread__free_stitch_list(thread); + +	if (thread__priv_destructor) +		thread__priv_destructor(thread__priv(thread)); +  	RC_CHK_FREE(thread);  }  |