cregit-Linux how code gets into the kernel

Release 4.14 arch/arm64/include/asm/ftrace.h

/*
 * arch/arm64/include/asm/ftrace.h
 *
 * Copyright (C) 2013 Linaro Limited
 * Author: AKASHI Takahiro <takahiro.akashi@linaro.org>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#ifndef __ASM_FTRACE_H

#define __ASM_FTRACE_H

#include <asm/insn.h>


#define MCOUNT_ADDR		((unsigned long)_mcount)

#define MCOUNT_INSN_SIZE	AARCH64_INSN_SIZE

#ifndef __ASSEMBLY__
#include <linux/compat.h>

extern void _mcount(unsigned long);
extern void *return_address(unsigned int);


struct dyn_arch_ftrace {
	/* No extra data needed for arm64 */
};

extern unsigned long ftrace_graph_call;

extern void return_to_handler(void);


static inline unsigned long ftrace_call_adjust(unsigned long addr) { /* * addr is the address of the mcount call instruction. * recordmcount does the necessary offset calculation. */ return addr; }

Contributors

PersonTokensPropCommitsCommitProp
AKASHI Takahiro16100.00%1100.00%
Total16100.00%1100.00%

#define ftrace_return_address(n) return_address(n) /* * Because AArch32 mode does not share the same syscall table with AArch64, * tracing compat syscalls may result in reporting bogus syscalls or even * hang-up, so just do not trace them. * See kernel/trace/trace_syscalls.c * * x86 code says: * If the user really wants these, then they should use the * raw syscall tracepoints with filtering. */ #define ARCH_TRACE_IGNORE_COMPAT_SYSCALLS
static inline bool arch_trace_is_compat_syscall(struct pt_regs *regs) { return is_compat_task(); }

Contributors

PersonTokensPropCommitsCommitProp
AKASHI Takahiro16100.00%1100.00%
Total16100.00%1100.00%

#endif /* ifndef __ASSEMBLY__ */ #endif /* __ASM_FTRACE_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
AKASHI Takahiro10799.07%583.33%
Adam Buchbinder10.93%116.67%
Total108100.00%6100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.