cregit-Linux how code gets into the kernel

Release 4.15 kernel/trace/trace_nop.c

Directory: kernel/trace
// SPDX-License-Identifier: GPL-2.0
/*
 * nop tracer
 *
 * Copyright (C) 2008 Steven Noonan <steven@uplinklabs.net>
 *
 */

#include <linux/module.h>
#include <linux/ftrace.h>

#include "trace.h"

/* Our two options */
enum {
	
TRACE_NOP_OPT_ACCEPT = 0x1,
	
TRACE_NOP_OPT_REFUSE = 0x2
};

/* Options for the tracer (see trace_options file) */

static struct tracer_opt nop_opts[] = {
	/* Option that will be accepted by set_flag callback */
	{ TRACER_OPT(test_nop_accept, TRACE_NOP_OPT_ACCEPT) },
	/* Option that will be refused by set_flag callback */
	{ TRACER_OPT(test_nop_refuse, TRACE_NOP_OPT_REFUSE) },
	{ } /* Always set a last empty entry */
};


static struct tracer_flags nop_flags = {
	/* You can check your flags value here when you want. */
	.val = 0, /* By default: all flags disabled */
	.opts = nop_opts
};


static struct trace_array	*ctx_trace;


static void start_nop_trace(struct trace_array *tr) { /* Nothing to do! */ }

Contributors

PersonTokensPropCommitsCommitProp
Steven Noonan12100.00%1100.00%
Total12100.00%1100.00%


static void stop_nop_trace(struct trace_array *tr) { /* Nothing to do! */ }

Contributors

PersonTokensPropCommitsCommitProp
Steven Noonan12100.00%1100.00%
Total12100.00%1100.00%


static int nop_trace_init(struct trace_array *tr) { ctx_trace = tr; start_nop_trace(tr); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Steven Noonan1982.61%150.00%
Frédéric Weisbecker417.39%150.00%
Total23100.00%2100.00%


static void nop_trace_reset(struct trace_array *tr) { stop_nop_trace(tr); }

Contributors

PersonTokensPropCommitsCommitProp
Steven Noonan16100.00%1100.00%
Total16100.00%1100.00%

/* It only serves as a signal handler and a callback to * accept or refuse the setting of a flag. * If you don't implement it, then the flag setting will be * automatically accepted. */
static int nop_set_flag(struct trace_array *tr, u32 old_flags, u32 bit, int set) { /* * Note that you don't need to update nop_flags.val yourself. * The tracing Api will do it automatically if you return 0 */ if (bit == TRACE_NOP_OPT_ACCEPT) { printk(KERN_DEBUG "nop_test_accept flag set to %d: we accept." " Now cat trace_options to see the result\n", set); return 0; } if (bit == TRACE_NOP_OPT_REFUSE) { printk(KERN_DEBUG "nop_test_refuse flag set to %d: we refuse." " Now cat trace_options to see the result\n", set); return -EINVAL; } return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Frédéric Weisbecker5990.77%133.33%
Steven Rostedt57.69%133.33%
Chunyu Hu11.54%133.33%
Total65100.00%3100.00%

struct tracer nop_trace __read_mostly = { .name = "nop", .init = nop_trace_init, .reset = nop_trace_reset, #ifdef CONFIG_FTRACE_SELFTEST .selftest = trace_selftest_startup_nop, #endif .flags = &nop_flags, .set_flag = nop_set_flag, .allow_instances = true, };

Overall Contributors

PersonTokensPropCommitsCommitProp
Frédéric Weisbecker13652.92%228.57%
Steven Noonan10741.63%114.29%
Steven Rostedt114.28%228.57%
Chunyu Hu20.78%114.29%
Greg Kroah-Hartman10.39%114.29%
Total257100.00%7100.00%
Directory: kernel/trace
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.