Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
1d7bf993
Commit
1d7bf993
authored
Sep 06, 2013
by
Ralf Baechle
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
MIPS: ftrace: Add support for syscall tracepoints.
Signed-off-by:
Ralf Baechle
<
ralf@linux-mips.org
>
parent
0dfa95aa
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
43 additions
and
3 deletions
+43
-3
arch/mips/Kconfig
arch/mips/Kconfig
+1
-0
arch/mips/include/asm/syscall.h
arch/mips/include/asm/syscall.h
+19
-0
arch/mips/include/asm/thread_info.h
arch/mips/include/asm/thread_info.h
+6
-3
arch/mips/include/asm/unistd.h
arch/mips/include/asm/unistd.h
+7
-0
arch/mips/kernel/ptrace.c
arch/mips/kernel/ptrace.c
+10
-0
No files found.
arch/mips/Kconfig
View file @
1d7bf993
...
...
@@ -19,6 +19,7 @@ config MIPS
select HAVE_KPROBES
select HAVE_KRETPROBES
select HAVE_DEBUG_KMEMLEAK
select HAVE_SYSCALL_TRACEPOINTS
select ARCH_BINFMT_ELF_RANDOMIZE_PIE
select HAVE_ARCH_TRANSPARENT_HUGEPAGE if CPU_SUPPORTS_HUGEPAGES && 64BIT
select RTC_LIB if !MACH_LOONGSON
...
...
arch/mips/include/asm/syscall.h
View file @
1d7bf993
...
...
@@ -59,6 +59,25 @@ static inline unsigned long mips_get_syscall_arg(unsigned long *arg,
}
}
static
inline
long
syscall_get_return_value
(
struct
task_struct
*
task
,
struct
pt_regs
*
regs
)
{
return
regs
->
regs
[
2
];
}
static
inline
void
syscall_set_return_value
(
struct
task_struct
*
task
,
struct
pt_regs
*
regs
,
int
error
,
long
val
)
{
if
(
error
)
{
regs
->
regs
[
2
]
=
-
error
;
regs
->
regs
[
7
]
=
-
1
;
}
else
{
regs
->
regs
[
2
]
=
val
;
regs
->
regs
[
7
]
=
0
;
}
}
static
inline
void
syscall_get_arguments
(
struct
task_struct
*
task
,
struct
pt_regs
*
regs
,
unsigned
int
i
,
unsigned
int
n
,
...
...
arch/mips/include/asm/thread_info.h
View file @
1d7bf993
...
...
@@ -116,6 +116,7 @@ static inline struct thread_info *current_thread_info(void)
#define TIF_32BIT_ADDR 23
/* 32-bit address space (o32/n32) */
#define TIF_FPUBOUND 24
/* thread bound to FPU-full CPU set */
#define TIF_LOAD_WATCH 25
/* If set, load watch registers */
#define TIF_SYSCALL_TRACEPOINT 26
/* syscall tracepoint instrumentation */
#define TIF_SYSCALL_TRACE 31
/* syscall trace active */
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
...
...
@@ -132,20 +133,22 @@ static inline struct thread_info *current_thread_info(void)
#define _TIF_32BIT_ADDR (1<<TIF_32BIT_ADDR)
#define _TIF_FPUBOUND (1<<TIF_FPUBOUND)
#define _TIF_LOAD_WATCH (1<<TIF_LOAD_WATCH)
#define _TIF_SYSCALL_TRACEPOINT (1<<TIF_SYSCALL_TRACEPOINT)
#define _TIF_WORK_SYSCALL_ENTRY (_TIF_NOHZ | _TIF_SYSCALL_TRACE | \
_TIF_SYSCALL_AUDIT)
_TIF_SYSCALL_AUDIT
| _TIF_SYSCALL_TRACEPOINT
)
/* work to do in syscall_trace_leave() */
#define _TIF_WORK_SYSCALL_EXIT (_TIF_NOHZ | _TIF_SYSCALL_TRACE | \
_TIF_SYSCALL_AUDIT)
_TIF_SYSCALL_AUDIT
| _TIF_SYSCALL_TRACEPOINT
)
/* work to do on interrupt/exception return */
#define _TIF_WORK_MASK \
(_TIF_SIGPENDING | _TIF_NEED_RESCHED | _TIF_NOTIFY_RESUME)
/* work to do on any return to u-space */
#define _TIF_ALLWORK_MASK (_TIF_NOHZ | _TIF_WORK_MASK | \
_TIF_WORK_SYSCALL_EXIT)
_TIF_WORK_SYSCALL_EXIT | \
_TIF_SYSCALL_TRACEPOINT)
/*
* We stash processor id into a COP0 register to retrieve it fast
...
...
arch/mips/include/asm/unistd.h
View file @
1d7bf993
...
...
@@ -14,6 +14,13 @@
#include <uapi/asm/unistd.h>
#ifdef CONFIG_MIPS32_N32
#define NR_syscalls (__NR_N32_Linux + __NR_N32_Linux_syscalls)
#elif defined(CONFIG_64BIT)
#define NR_syscalls (__NR_64_Linux + __NR_64_Linux_syscalls)
#else
#define NR_syscalls (__NR_O32_Linux + __NR_O32_Linux_syscalls)
#endif
#ifndef __ASSEMBLY__
...
...
arch/mips/kernel/ptrace.c
View file @
1d7bf993
...
...
@@ -29,6 +29,7 @@
#include <linux/tracehook.h>
#include <linux/audit.h>
#include <linux/seccomp.h>
#include <linux/ftrace.h>
#include <asm/byteorder.h>
#include <asm/cpu.h>
...
...
@@ -43,6 +44,9 @@
#include <asm/bootinfo.h>
#include <asm/reg.h>
#define CREATE_TRACE_POINTS
#include <trace/events/syscalls.h>
/*
* Called by kernel/ptrace.c when detaching..
*
...
...
@@ -664,6 +668,9 @@ asmlinkage void syscall_trace_enter(struct pt_regs *regs)
tracehook_report_syscall_entry
(
regs
))
ret
=
-
1
;
if
(
unlikely
(
test_thread_flag
(
TIF_SYSCALL_TRACEPOINT
)))
trace_sys_enter
(
regs
,
regs
->
regs
[
2
]);
audit_syscall_entry
(
__syscall_get_arch
(),
regs
->
regs
[
2
],
regs
->
regs
[
4
],
regs
->
regs
[
5
],
...
...
@@ -685,6 +692,9 @@ asmlinkage void syscall_trace_leave(struct pt_regs *regs)
audit_syscall_exit
(
regs
);
if
(
unlikely
(
test_thread_flag
(
TIF_SYSCALL_TRACEPOINT
)))
trace_sys_exit
(
regs
,
regs
->
regs
[
2
]);
if
(
test_thread_flag
(
TIF_SYSCALL_TRACE
))
tracehook_report_syscall_exit
(
regs
,
0
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment