mirror of
https://github.com/strongswan/strongswan.git
synced 2025-10-06 00:00:47 -04:00
threshhold and ./configure option for lock profiler
This commit is contained in:
parent
ac29400e34
commit
0214012508
@ -377,6 +377,14 @@ AC_ARG_ENABLE(
|
|||||||
fi]
|
fi]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE(
|
||||||
|
[lock-profiler],
|
||||||
|
AS_HELP_STRING([--enable-lock-profiling],[enable lock/mutex profiling code (default is NO).]),
|
||||||
|
[if test x$enableval = xyes; then
|
||||||
|
lock_profiler=true
|
||||||
|
fi]
|
||||||
|
)
|
||||||
|
|
||||||
AC_ARG_ENABLE(
|
AC_ARG_ENABLE(
|
||||||
[unit-tests],
|
[unit-tests],
|
||||||
AS_HELP_STRING([--enable-unit-tests],[enable unit tests on IKEv2 daemon startup (default is NO).]),
|
AS_HELP_STRING([--enable-unit-tests],[enable unit tests on IKEv2 daemon startup (default is NO).]),
|
||||||
@ -899,6 +907,7 @@ dnl =============
|
|||||||
AM_CONDITIONAL(USE_SMARTCARD, test x$smartcard = xtrue)
|
AM_CONDITIONAL(USE_SMARTCARD, test x$smartcard = xtrue)
|
||||||
AM_CONDITIONAL(USE_CISCO_QUIRKS, test x$cisco_quirks = xtrue)
|
AM_CONDITIONAL(USE_CISCO_QUIRKS, test x$cisco_quirks = xtrue)
|
||||||
AM_CONDITIONAL(USE_LEAK_DETECTIVE, test x$leak_detective = xtrue)
|
AM_CONDITIONAL(USE_LEAK_DETECTIVE, test x$leak_detective = xtrue)
|
||||||
|
AM_CONDITIONAL(USE_LOCK_PROFILER, test x$lock_profiler = xtrue)
|
||||||
AM_CONDITIONAL(USE_NAT_TRANSPORT, test x$nat_transport = xtrue)
|
AM_CONDITIONAL(USE_NAT_TRANSPORT, test x$nat_transport = xtrue)
|
||||||
AM_CONDITIONAL(USE_VENDORID, test x$vendor_id = xtrue)
|
AM_CONDITIONAL(USE_VENDORID, test x$vendor_id = xtrue)
|
||||||
AM_CONDITIONAL(USE_XAUTH_VID, test x$xauth_vid = xtrue)
|
AM_CONDITIONAL(USE_XAUTH_VID, test x$xauth_vid = xtrue)
|
||||||
|
@ -64,6 +64,10 @@ if USE_LEAK_DETECTIVE
|
|||||||
libstrongswan_la_SOURCES += utils/leak_detective.c utils/leak_detective.h
|
libstrongswan_la_SOURCES += utils/leak_detective.c utils/leak_detective.h
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if USE_LOCK_PROFILER
|
||||||
|
AM_CFLAGS += -DLOCK_PROFILER
|
||||||
|
endif
|
||||||
|
|
||||||
if USE_INTEGRITY_TEST
|
if USE_INTEGRITY_TEST
|
||||||
libstrongswan_la_SOURCES += \
|
libstrongswan_la_SOURCES += \
|
||||||
fips/fips_canister_end.c
|
fips/fips_canister_end.c
|
||||||
|
@ -27,6 +27,10 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do not report mutexes with an overall waiting time smaller than this (in us)
|
||||||
|
*/
|
||||||
|
#define PROFILE_TRESHHOLD 1000
|
||||||
|
|
||||||
typedef struct private_mutex_t private_mutex_t;
|
typedef struct private_mutex_t private_mutex_t;
|
||||||
typedef struct private_r_mutex_t private_r_mutex_t;
|
typedef struct private_r_mutex_t private_r_mutex_t;
|
||||||
@ -103,17 +107,18 @@ struct private_condvar_t {
|
|||||||
};
|
};
|
||||||
|
|
||||||
#ifdef LOCK_PROFILER
|
#ifdef LOCK_PROFILER
|
||||||
|
|
||||||
#include <execinfo.h>
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Print and cleanup mutex profiler
|
* Print and cleanup mutex profiler
|
||||||
*/
|
*/
|
||||||
static void profiler_cleanup(private_mutex_t *this)
|
static void profiler_cleanup(private_mutex_t *this)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "waited %d.%06ds in mutex, created at:",
|
if (this->waited.tv_sec > 0 ||
|
||||||
this->waited.tv_sec, this->waited.tv_usec);
|
this->waited.tv_usec > PROFILE_TRESHHOLD)
|
||||||
this->backtrace->log(this->backtrace, stderr);
|
{
|
||||||
|
fprintf(stderr, "waited %d.%06ds in mutex, created at:",
|
||||||
|
this->waited.tv_sec, this->waited.tv_usec);
|
||||||
|
this->backtrace->log(this->backtrace, stderr);
|
||||||
|
}
|
||||||
this->backtrace->destroy(this->backtrace);
|
this->backtrace->destroy(this->backtrace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user