linux/arch/sh/kernel/perf_callchain.c
<<
>>
Prefs
   1/*
   2 * Performance event callchain support - SuperH architecture code
   3 *
   4 * Copyright (C) 2009  Paul Mundt
   5 *
   6 * This file is subject to the terms and conditions of the GNU General Public
   7 * License.  See the file "COPYING" in the main directory of this archive
   8 * for more details.
   9 */
  10#include <linux/kernel.h>
  11#include <linux/sched.h>
  12#include <linux/perf_event.h>
  13#include <linux/percpu.h>
  14#include <asm/unwinder.h>
  15#include <asm/ptrace.h>
  16
  17static int callchain_stack(void *data, char *name)
  18{
  19        return 0;
  20}
  21
  22static void callchain_address(void *data, unsigned long addr, int reliable)
  23{
  24        struct perf_callchain_entry *entry = data;
  25
  26        if (reliable)
  27                perf_callchain_store(entry, addr);
  28}
  29
  30static const struct stacktrace_ops callchain_ops = {
  31        .stack          = callchain_stack,
  32        .address        = callchain_address,
  33};
  34
  35void
  36perf_callchain_kernel(struct perf_callchain_entry *entry, struct pt_regs *regs)
  37{
  38        perf_callchain_store(entry, regs->pc);
  39
  40        unwind_stack(NULL, regs, NULL, &callchain_ops, entry);
  41}
  42