From: Michael Vrable Date: Tue, 30 Nov 2010 04:57:27 +0000 (-0800) Subject: Allow profile results to be written to a file. X-Git-Url: http://git.vrable.net/?p=bluesky.git;a=commitdiff_plain;h=f53cd8284a0461840cea01c7c6dbc875c52fac50 Allow profile results to be written to a file. --- diff --git a/bluesky/bluesky.h b/bluesky/bluesky.h index 653adc8..bf01abe 100644 --- a/bluesky/bluesky.h +++ b/bluesky/bluesky.h @@ -10,6 +10,7 @@ #define _BLUESKY_H #include +#include #include #include @@ -379,6 +380,7 @@ void bluesky_profile_add_event(BlueSkyProfile *profile, char *message); void bluesky_profile_print(BlueSkyProfile *profile); BlueSkyProfile *bluesky_profile_get(); void bluesky_profile_set(BlueSkyProfile *profile); +void bluesky_profile_set_output(FILE *stream); #ifdef __cplusplus } diff --git a/bluesky/util.c b/bluesky/util.c index 99e341f..45bc9f5 100644 --- a/bluesky/util.c +++ b/bluesky/util.c @@ -383,21 +383,32 @@ void bluesky_profile_add_event(BlueSkyProfile *profile, char *message) g_mutex_unlock(profile->lock); } +static FILE *profiling_file = NULL; +static GStaticMutex profiling_print_lock = G_STATIC_MUTEX_INIT; + +void bluesky_profile_set_output(FILE *stream) +{ + profiling_file = stream; +} + void bluesky_profile_print(BlueSkyProfile *profile) { + FILE *stream = profiling_file ? profiling_file : stdout; g_return_if_fail(profile != NULL); g_mutex_lock(profile->lock); - g_print("Event Timeline: %s\n", profile->description); + g_static_mutex_lock(&profiling_print_lock); + fprintf(stream, "Event Timeline: %s\n", profile->description); GList *link = g_list_last(profile->events); bluesky_time_hires last_time = 0; while (link != NULL) { RTEvent *event = (RTEvent *)link->data; - g_print(" [%d] [%"PRIi64" ns]: %s\n", + fprintf(stream, " [%d] [%"PRIi64" ns]: %s\n", event->tid, event->timestamp - last_time, event->message); last_time = event->timestamp; link = link->prev; } + g_static_mutex_unlock(&profiling_print_lock); g_mutex_unlock(profile->lock); } diff --git a/nfs3/nfsd.c b/nfs3/nfsd.c index 6c975f2..e95ac7c 100644 --- a/nfs3/nfsd.c +++ b/nfs3/nfsd.c @@ -57,6 +57,10 @@ int main(int argc, char *argv[]) if (key == NULL) key = ""; + const char *profile_output = getenv("BLUESKY_PROFILE_OUT"); + if (profile_output != NULL) + bluesky_profile_set_output(fopen(profile_output, "a")); + store = bluesky_store_new(target); fs = bluesky_init_fs("export", store, key);