summaryrefslogtreecommitdiffstats
path: root/src/util/support/threads.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/support/threads.c')
-rw-r--r--src/util/support/threads.c132
1 files changed, 0 insertions, 132 deletions
diff --git a/src/util/support/threads.c b/src/util/support/threads.c
index b30989df1..316be8a1c 100644
--- a/src/util/support/threads.c
+++ b/src/util/support/threads.c
@@ -412,11 +412,6 @@ int krb5int_call_thread_support_init (void)
#include "cache-addrinfo.h"
-#ifdef DEBUG_THREADS_STATS
-#include <stdio.h>
-static FILE *stats_logfile;
-#endif
-
int krb5int_thread_support_init (void)
{
int err;
@@ -425,15 +420,6 @@ int krb5int_thread_support_init (void)
printf("krb5int_thread_support_init\n");
#endif
-#ifdef DEBUG_THREADS_STATS
- /* stats_logfile = stderr; */
- stats_logfile = fopen("/dev/tty", "w+");
- if (stats_logfile == NULL)
- stats_logfile = stderr;
- else
- set_cloexec_file(stats_logfile);
-#endif
-
#ifndef ENABLE_THREADS
/* Nothing to do for TLS initialization. */
@@ -498,127 +484,9 @@ void krb5int_thread_support_fini (void)
#endif
-#ifdef DEBUG_THREADS_STATS
- fflush(stats_logfile);
- /* XXX Should close if not stderr, in case unloading library but
- not exiting. */
-#endif
-
krb5int_fini_fac();
}
-#ifdef DEBUG_THREADS_STATS
-void KRB5_CALLCONV
-k5_mutex_lock_update_stats(k5_debug_mutex_stats *m,
- k5_mutex_stats_tmp startwait)
-{
- k5_debug_time_t now;
- k5_debug_timediff_t tdiff, tdiff2;
-
- now = get_current_time();
- (void) krb5int_call_thread_support_init();
- m->count++;
- m->time_acquired = now;
- tdiff = timediff(now, startwait);
- tdiff2 = tdiff * tdiff;
- if (m->count == 1 || m->lockwait.valmin > tdiff)
- m->lockwait.valmin = tdiff;
- if (m->count == 1 || m->lockwait.valmax < tdiff)
- m->lockwait.valmax = tdiff;
- m->lockwait.valsum += tdiff;
- m->lockwait.valsqsum += tdiff2;
-}
-
-void KRB5_CALLCONV
-krb5int_mutex_unlock_update_stats(k5_debug_mutex_stats *m)
-{
- k5_debug_time_t now = get_current_time();
- k5_debug_timediff_t tdiff, tdiff2;
- tdiff = timediff(now, m->time_acquired);
- tdiff2 = tdiff * tdiff;
- if (m->count == 1 || m->lockheld.valmin > tdiff)
- m->lockheld.valmin = tdiff;
- if (m->count == 1 || m->lockheld.valmax < tdiff)
- m->lockheld.valmax = tdiff;
- m->lockheld.valsum += tdiff;
- m->lockheld.valsqsum += tdiff2;
-}
-
-#include <math.h>
-static inline double
-get_stddev(struct k5_timediff_stats sp, int count)
-{
- long double mu, mu_squared, rho_squared;
- mu = (long double) sp.valsum / count;
- mu_squared = mu * mu;
- /* SUM((x_i - mu)^2)
- = SUM(x_i^2 - 2*mu*x_i + mu^2)
- = SUM(x_i^2) - 2*mu*SUM(x_i) + N*mu^2
-
- Standard deviation rho^2 = SUM(...) / N. */
- rho_squared = (sp.valsqsum - 2 * mu * sp.valsum + count * mu_squared) / count;
- return sqrt(rho_squared);
-}
-
-void KRB5_CALLCONV
-krb5int_mutex_report_stats(k5_mutex_t *m)
-{
- char *p;
-
- /* Tweak this to only record data on "interesting" locks. */
- if (m->stats.count < 10)
- return;
- if (m->stats.lockwait.valsum < 10 * m->stats.count)
- return;
-
- p = strrchr(m->loc_created.filename, '/');
- if (p == NULL)
- p = m->loc_created.filename;
- else
- p++;
- fprintf(stats_logfile, "mutex @%p: created at line %d of %s\n",
- (void *) m, m->loc_created.lineno, p);
- if (m->stats.count == 0)
- fprintf(stats_logfile, "\tnever locked\n");
- else {
- double sd_wait, sd_hold;
- sd_wait = get_stddev(m->stats.lockwait, m->stats.count);
- sd_hold = get_stddev(m->stats.lockheld, m->stats.count);
- fprintf(stats_logfile,
- "\tlocked %d time%s; wait %lu/%f/%lu/%fus, hold %lu/%f/%lu/%fus\n",
- m->stats.count, m->stats.count == 1 ? "" : "s",
- (unsigned long) m->stats.lockwait.valmin,
- (double) m->stats.lockwait.valsum / m->stats.count,
- (unsigned long) m->stats.lockwait.valmax,
- sd_wait,
- (unsigned long) m->stats.lockheld.valmin,
- (double) m->stats.lockheld.valsum / m->stats.count,
- (unsigned long) m->stats.lockheld.valmax,
- sd_hold);
- }
-}
-#else
-/* On Windows, everything defined in the export list must be defined.
- The UNIX systems where we're using the export list don't seem to
- care. */
-#undef krb5int_mutex_lock_update_stats
-void KRB5_CALLCONV
-krb5int_mutex_lock_update_stats(k5_debug_mutex_stats *m,
- k5_mutex_stats_tmp startwait)
-{
-}
-#undef krb5int_mutex_unlock_update_stats
-void KRB5_CALLCONV
-krb5int_mutex_unlock_update_stats(k5_debug_mutex_stats *m)
-{
-}
-#undef krb5int_mutex_report_stats
-void KRB5_CALLCONV
-krb5int_mutex_report_stats(k5_mutex_t *m)
-{
-}
-#endif
-
/* Mutex allocation functions, for use in plugins that may not know
what options a given set of libraries was compiled with. */
int KRB5_CALLCONV