summaryrefslogtreecommitdiffstats
path: root/source4/scripting/python/samba/tests
diff options
context:
space:
mode:
Diffstat (limited to 'source4/scripting/python/samba/tests')
0 files changed, 0 insertions, 0 deletions
>40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
/*
 * ring buffer based initcalls tracer
 *
 * Copyright (C) 2008 Frederic Weisbecker <fweisbec@gmail.com>
 *
 */

#include <linux/init.h>
#include <linux/debugfs.h>
#include <linux/ftrace.h>
#include <linux/kallsyms.h>

#include "trace.h"

static struct trace_array *boot_trace;
static int trace_boot_enabled;


/* Should be started after do_pre_smp_initcalls() in init/main.c */
void start_boot_trace(void)
{
	trace_boot_enabled = 1;
}

void stop_boot_trace(void)
{
	trace_boot_enabled = 0;
}

void reset_boot_trace(struct trace_array *tr)
{
	stop_boot_trace();
}

static void boot_trace_init(struct trace_array *tr)
{
	int cpu;
	boot_trace = tr;

	trace_boot_enabled = 0;

	for_each_cpu_mask(cpu, cpu_possible_map)
		tracing_reset(tr, cpu);
}

static void boot_trace_ctrl_update(struct trace_array *tr)
{
	if (tr->ctrl)
		start_boot_trace();
	else
		stop_boot_trace();
}

static enum print_line_t initcall_print_line(struct trace_iterator *iter)
{
	int ret;
	struct trace_entry *entry = iter->ent;
	struct trace_boot *field = (struct trace_boot *)entry;
	struct boot_trace *it = &field->initcall;
	struct trace_seq *s = &iter->seq;
	struct timespec calltime = ktime_to_timespec(it->calltime);
	struct timespec rettime = ktime_to_timespec(it->rettime);

	if (entry->type == TRACE_BOOT) {
		ret = trace_seq_printf(s, "[%5ld.%09ld] calling  %s @ %i\n",
					  calltime.tv_sec,
					  calltime.tv_nsec,
					  it->func, it->caller);