Merge branch 'clrkwllms/work' into rt-tests-0.84-devel
Signed-off-by: John Kacur <jkacur@redhat.com>
This commit is contained in:
commit
93e525fac1
|
@ -249,6 +249,7 @@ static char functiontracer[MAX_PATH];
|
|||
static char traceroptions[MAX_PATH];
|
||||
|
||||
static int trace_fd = -1;
|
||||
static int tracemark_fd = -1;
|
||||
|
||||
static int kernvar(int mode, const char *name, char *value, size_t sizeofvalue)
|
||||
{
|
||||
|
@ -378,6 +379,27 @@ static int trace_file_exists(char *name)
|
|||
return stat(path, &sbuf) ? 0 : 1;
|
||||
}
|
||||
|
||||
#define TRACEBUFSIZ 1024
|
||||
static __thread char tracebuf[TRACEBUFSIZ];
|
||||
|
||||
static void tracemark(char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
int len;
|
||||
|
||||
/* bail out if we're not tracing */
|
||||
/* or if the kernel doesn't support trace_mark */
|
||||
if (tracemark_fd < 0)
|
||||
return;
|
||||
|
||||
va_start(ap, fmt);
|
||||
len = vsnprintf(tracebuf, TRACEBUFSIZ, fmt, ap);
|
||||
va_end(ap);
|
||||
write(tracemark_fd, tracebuf, len);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void tracing(int on)
|
||||
{
|
||||
if (on) {
|
||||
|
@ -540,6 +562,14 @@ static void setup_tracer(void)
|
|||
fatal("unable to open %s for tracing", path);
|
||||
}
|
||||
|
||||
/* open the tracemark file descriptor */
|
||||
if (tracemark_fd == -1) {
|
||||
char path[MAX_PATH];
|
||||
strcat(strcpy(path, fileprefix), "trace_marker");
|
||||
if ((tracemark_fd = open(path, O_WRONLY)) == -1)
|
||||
warn("unable to open trace_marker file: %s\n", path);
|
||||
}
|
||||
|
||||
} else {
|
||||
setkernvar("trace_all_cpus", "1");
|
||||
setkernvar("trace_freerunning", "1");
|
||||
|
@ -839,6 +869,7 @@ void *timerthread(void *param)
|
|||
|
||||
if (!stopped && tracelimit && (diff > tracelimit)) {
|
||||
stopped++;
|
||||
tracemark("hit latency threshold (%d > %d)", diff, tracelimit);
|
||||
tracing(0);
|
||||
shutdown++;
|
||||
pthread_mutex_lock(&break_thread_id_lock);
|
||||
|
@ -1830,6 +1861,8 @@ int main(int argc, char **argv)
|
|||
|
||||
|
||||
/* close any tracer file descriptors */
|
||||
if (tracemark_fd >= 0)
|
||||
close(tracemark_fd);
|
||||
if (trace_fd >= 0)
|
||||
close(trace_fd);
|
||||
|
||||
|
|
Loading…
Reference in New Issue