summaryrefslogtreecommitdiff
path: root/vio
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2020-01-29 13:50:26 +0100
committerSergei Golubchik <serg@mariadb.org>2020-03-10 19:24:22 +0100
commit7c58e97bf6f80a251046c5b3e7bce826fe058bd6 (patch)
tree7d32d26b320cf83296ee0ede2ea164ad116c4de8 /vio
parent2ac3121af2767186c489054db5d4871d04b8eef4 (diff)
downloadmariadb-git-7c58e97bf6f80a251046c5b3e7bce826fe058bd6.tar.gz
perfschema memory related instrumentation changes
Diffstat (limited to 'vio')
-rw-r--r--vio/vio.c29
-rw-r--r--vio/vio_priv.h4
-rw-r--r--vio/viosslfactories.c3
3 files changed, 32 insertions, 4 deletions
diff --git a/vio/vio.c b/vio/vio.c
index 3f92c1e6853..cabed39d94f 100644
--- a/vio/vio.c
+++ b/vio/vio.c
@@ -24,6 +24,28 @@
#include "vio_priv.h"
#include "ssl_compat.h"
+PSI_memory_key key_memory_vio_ssl_fd;
+PSI_memory_key key_memory_vio;
+PSI_memory_key key_memory_vio_read_buffer;
+
+#ifdef HAVE_PSI_INTERFACE
+static PSI_memory_info all_vio_memory[]=
+{
+ {&key_memory_vio_ssl_fd, "ssl_fd", 0},
+ {&key_memory_vio, "vio", 0},
+ {&key_memory_vio_read_buffer, "read_buffer", 0},
+};
+
+void init_vio_psi_keys()
+{
+ const char* category= "vio";
+ int count;
+
+ count= array_elements(all_vio_memory);
+ mysql_memory_register(category, all_vio_memory, count);
+}
+#endif
+
#ifdef _WIN32
/**
@@ -80,7 +102,8 @@ static void vio_init(Vio *vio, enum enum_vio_type type,
vio->localhost= flags & VIO_LOCALHOST;
vio->read_timeout= vio->write_timeout= -1;
if ((flags & VIO_BUFFERED_READ) &&
- !(vio->read_buffer= (char*)my_malloc(VIO_READ_BUFFER_SIZE, MYF(MY_WME))))
+ !(vio->read_buffer= (char*)my_malloc(key_memory_vio_read_buffer,
+ VIO_READ_BUFFER_SIZE, MYF(MY_WME))))
flags&= ~VIO_BUFFERED_READ;
#ifdef _WIN32
if (type == VIO_TYPE_NAMEDPIPE)
@@ -217,7 +240,7 @@ Vio *mysql_socket_vio_new(MYSQL_SOCKET mysql_socket, enum enum_vio_type type, ui
my_socket sd= mysql_socket_getfd(mysql_socket);
DBUG_ENTER("mysql_socket_vio_new");
DBUG_PRINT("enter", ("sd: %d", (int)sd));
- if ((vio = (Vio*) my_malloc(sizeof(*vio),MYF(MY_WME))))
+ if ((vio = (Vio*) my_malloc(key_memory_vio, sizeof(*vio), MYF(MY_WME))))
{
vio_init(vio, type, sd, flags);
vio->desc= (vio->type == VIO_TYPE_SOCKET ? "socket" : "TCP/IP");
@@ -247,7 +270,7 @@ Vio *vio_new_win32pipe(HANDLE hPipe)
{
Vio *vio;
DBUG_ENTER("vio_new_handle");
- if ((vio = (Vio*) my_malloc(sizeof(Vio),MYF(MY_WME))))
+ if ((vio = (Vio*) my_malloc(PSI_INSTRUMENT_ME, sizeof(Vio),MYF(MY_WME))))
{
vio_init(vio, VIO_TYPE_NAMEDPIPE, 0, VIO_LOCALHOST);
vio->desc= "named pipe";
diff --git a/vio/vio_priv.h b/vio/vio_priv.h
index 9b68624a811..8dc38ab31e8 100644
--- a/vio/vio_priv.h
+++ b/vio/vio_priv.h
@@ -26,6 +26,10 @@
#include <m_string.h>
#include <violite.h>
+extern PSI_memory_key key_memory_vio;
+extern PSI_memory_key key_memory_vio_read_buffer;
+extern PSI_memory_key key_memory_vio_ssl_fd;
+
#ifdef _WIN32
size_t vio_read_pipe(Vio *vio, uchar * buf, size_t size);
size_t vio_write_pipe(Vio *vio, const uchar * buf, size_t size);
diff --git a/vio/viosslfactories.c b/vio/viosslfactories.c
index edd40c2d60c..3783331e7df 100644
--- a/vio/viosslfactories.c
+++ b/vio/viosslfactories.c
@@ -246,7 +246,8 @@ new_VioSSLFd(const char *key_file, const char *cert_file,
check_ssl_init();
if (!(ssl_fd= ((struct st_VioSSLFd*)
- my_malloc(sizeof(struct st_VioSSLFd),MYF(0)))))
+ my_malloc(key_memory_vio_ssl_fd,
+ sizeof(struct st_VioSSLFd), MYF(0)))))
goto err0;
if (!(ssl_fd->ssl_context= SSL_CTX_new(is_client_method ?
SSLv23_client_method() :