Commit 8e5e4202 authored by Marc Alff's avatar Marc Alff

Bug#44210 Performance schema: pool-of-threads threads instrumentation is missing

WL#5136 Pool of threads

Added an explicit delete_thread() API in the instrumentation,
to be used by the pool of threads implementations.
parent d86d1221
/* Copyright (C) 2008-2009 Sun Microsystems, Inc /* Copyright (C) 2008-2010 Sun Microsystems, Inc
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
...@@ -614,6 +614,9 @@ typedef void (*set_thread_v1_t)(struct PSI_thread *thread); ...@@ -614,6 +614,9 @@ typedef void (*set_thread_v1_t)(struct PSI_thread *thread);
/** Delete the current thread instrumentation. */ /** Delete the current thread instrumentation. */
typedef void (*delete_current_thread_v1_t)(void); typedef void (*delete_current_thread_v1_t)(void);
/** Delete a thread instrumentation. */
typedef void (*delete_thread_v1_t)(struct PSI_thread *thread);
/** /**
Get a mutex instrumentation locker. Get a mutex instrumentation locker.
@param mutex the instrumented mutex to lock @param mutex the instrumented mutex to lock
...@@ -890,6 +893,8 @@ struct PSI_v1 ...@@ -890,6 +893,8 @@ struct PSI_v1
set_thread_v1_t set_thread; set_thread_v1_t set_thread;
/** @sa delete_current_thread_v1_t. */ /** @sa delete_current_thread_v1_t. */
delete_current_thread_v1_t delete_current_thread; delete_current_thread_v1_t delete_current_thread;
/** @sa delete_thread_v1_t. */
delete_thread_v1_t delete_thread;
/** @sa get_thread_mutex_locker_v1_t. */ /** @sa get_thread_mutex_locker_v1_t. */
get_thread_mutex_locker_v1_t get_thread_mutex_locker; get_thread_mutex_locker_v1_t get_thread_mutex_locker;
/** @sa get_thread_rwlock_locker_v1_t. */ /** @sa get_thread_rwlock_locker_v1_t. */
......
...@@ -127,6 +127,7 @@ typedef void (*set_thread_id_v1_t)(struct PSI_thread *thread, ...@@ -127,6 +127,7 @@ typedef void (*set_thread_id_v1_t)(struct PSI_thread *thread,
typedef struct PSI_thread* (*get_thread_v1_t)(void); typedef struct PSI_thread* (*get_thread_v1_t)(void);
typedef void (*set_thread_v1_t)(struct PSI_thread *thread); typedef void (*set_thread_v1_t)(struct PSI_thread *thread);
typedef void (*delete_current_thread_v1_t)(void); typedef void (*delete_current_thread_v1_t)(void);
typedef void (*delete_thread_v1_t)(struct PSI_thread *thread);
typedef struct PSI_mutex_locker* (*get_thread_mutex_locker_v1_t) typedef struct PSI_mutex_locker* (*get_thread_mutex_locker_v1_t)
(struct PSI_mutex *mutex, enum PSI_mutex_operation op); (struct PSI_mutex *mutex, enum PSI_mutex_operation op);
typedef struct PSI_rwlock_locker* (*get_thread_rwlock_locker_v1_t) typedef struct PSI_rwlock_locker* (*get_thread_rwlock_locker_v1_t)
...@@ -204,6 +205,7 @@ struct PSI_v1 ...@@ -204,6 +205,7 @@ struct PSI_v1
get_thread_v1_t get_thread; get_thread_v1_t get_thread;
set_thread_v1_t set_thread; set_thread_v1_t set_thread;
delete_current_thread_v1_t delete_current_thread; delete_current_thread_v1_t delete_current_thread;
delete_thread_v1_t delete_thread;
get_thread_mutex_locker_v1_t get_thread_mutex_locker; get_thread_mutex_locker_v1_t get_thread_mutex_locker;
get_thread_rwlock_locker_v1_t get_thread_rwlock_locker; get_thread_rwlock_locker_v1_t get_thread_rwlock_locker;
get_thread_cond_locker_v1_t get_thread_cond_locker; get_thread_cond_locker_v1_t get_thread_cond_locker;
......
...@@ -1081,6 +1081,13 @@ static void delete_current_thread_v1(void) ...@@ -1081,6 +1081,13 @@ static void delete_current_thread_v1(void)
} }
} }
static void delete_thread_v1(PSI_thread *thread)
{
PFS_thread *pfs= reinterpret_cast<PFS_thread*> (thread);
if (pfs != NULL)
destroy_thread(pfs);
}
static PSI_mutex_locker* static PSI_mutex_locker*
get_thread_mutex_locker_v1(PSI_mutex *mutex, PSI_mutex_operation op) get_thread_mutex_locker_v1(PSI_mutex *mutex, PSI_mutex_operation op)
{ {
...@@ -2007,6 +2014,7 @@ PSI_v1 PFS_v1= ...@@ -2007,6 +2014,7 @@ PSI_v1 PFS_v1=
get_thread_v1, get_thread_v1,
set_thread_v1, set_thread_v1,
delete_current_thread_v1, delete_current_thread_v1,
delete_thread_v1,
get_thread_mutex_locker_v1, get_thread_mutex_locker_v1,
get_thread_rwlock_locker_v1, get_thread_rwlock_locker_v1,
get_thread_cond_locker_v1, get_thread_cond_locker_v1,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment