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
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);
/** Delete the current thread instrumentation. */
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.
@param mutex the instrumented mutex to lock
......@@ -890,6 +893,8 @@ struct PSI_v1
set_thread_v1_t set_thread;
/** @sa delete_current_thread_v1_t. */
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. */
get_thread_mutex_locker_v1_t get_thread_mutex_locker;
/** @sa get_thread_rwlock_locker_v1_t. */
......
......@@ -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 void (*set_thread_v1_t)(struct PSI_thread *thread);
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)
(struct PSI_mutex *mutex, enum PSI_mutex_operation op);
typedef struct PSI_rwlock_locker* (*get_thread_rwlock_locker_v1_t)
......@@ -204,6 +205,7 @@ struct PSI_v1
get_thread_v1_t get_thread;
set_thread_v1_t set_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_rwlock_locker_v1_t get_thread_rwlock_locker;
get_thread_cond_locker_v1_t get_thread_cond_locker;
......
......@@ -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*
get_thread_mutex_locker_v1(PSI_mutex *mutex, PSI_mutex_operation op)
{
......@@ -2007,6 +2014,7 @@ PSI_v1 PFS_v1=
get_thread_v1,
set_thread_v1,
delete_current_thread_v1,
delete_thread_v1,
get_thread_mutex_locker_v1,
get_thread_rwlock_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