#include <linux/kernel.h>
#include <linux/compiler.h>
#include <linux/irqflags.h>
#include <linux/percpu.h>
#include <linux/smp.h>
#include <linux/atomic.h>
#include <linux/types.h>
#include <linux/mutex.h>
#include <linux/ftrace.h>
#include <linux/fs.h>
#include <linux/debugfs.h>
#include <linux/err.h>
#include <linux/cache.h>
#include <linux/slab.h>
#include <asm/barrier.h>
#include "internal.h"
static u64 pstore_ftrace_stamp;
static void notrace pstore_ftrace_call(unsigned long ip,
unsigned long parent_ip,
struct ftrace_ops *op,
struct ftrace_regs *fregs)
{ … }
static struct ftrace_ops pstore_ftrace_ops __read_mostly = …;
static DEFINE_MUTEX(pstore_ftrace_lock);
static bool pstore_ftrace_enabled;
static int pstore_set_ftrace_enabled(bool on)
{ … }
static ssize_t pstore_ftrace_knob_write(struct file *f, const char __user *buf,
size_t count, loff_t *ppos)
{ … }
static ssize_t pstore_ftrace_knob_read(struct file *f, char __user *buf,
size_t count, loff_t *ppos)
{ … }
static const struct file_operations pstore_knob_fops = …;
static struct dentry *pstore_ftrace_dir;
static bool record_ftrace;
module_param(record_ftrace, bool, 0400);
MODULE_PARM_DESC(…) …;
void pstore_register_ftrace(void)
{ … }
void pstore_unregister_ftrace(void)
{ … }
ssize_t pstore_ftrace_combine_log(char **dest_log, size_t *dest_log_size,
const char *src_log, size_t src_log_size)
{ … }
EXPORT_SYMBOL_GPL(…);