xref: /linux/tools/include/nolibc/sys/ptrace.h (revision 861ea34546dcde8600878d5e7f746795f22fc818)
1*ec4bb8e8SBenjamin Berg /* SPDX-License-Identifier: LGPL-2.1 OR MIT */
2*ec4bb8e8SBenjamin Berg /*
3*ec4bb8e8SBenjamin Berg  * ptrace for NOLIBC
4*ec4bb8e8SBenjamin Berg  * Copyright (C) 2017-2021 Willy Tarreau <w@1wt.eu>
5*ec4bb8e8SBenjamin Berg  * Copyright (C) 2025 Intel Corporation
6*ec4bb8e8SBenjamin Berg  */
7*ec4bb8e8SBenjamin Berg 
8*ec4bb8e8SBenjamin Berg /* make sure to include all global symbols */
9*ec4bb8e8SBenjamin Berg #include "../nolibc.h"
10*ec4bb8e8SBenjamin Berg 
11*ec4bb8e8SBenjamin Berg #ifndef _NOLIBC_SYS_PTRACE_H
12*ec4bb8e8SBenjamin Berg #define _NOLIBC_SYS_PTRACE_H
13*ec4bb8e8SBenjamin Berg 
14*ec4bb8e8SBenjamin Berg #include "../sys.h"
15*ec4bb8e8SBenjamin Berg 
16*ec4bb8e8SBenjamin Berg #include <linux/ptrace.h>
17*ec4bb8e8SBenjamin Berg 
18*ec4bb8e8SBenjamin Berg /*
19*ec4bb8e8SBenjamin Berg  * long ptrace(int op, pid_t pid, void *addr, void *data);
20*ec4bb8e8SBenjamin Berg  */
21*ec4bb8e8SBenjamin Berg static __attribute__((unused))
22*ec4bb8e8SBenjamin Berg long sys_ptrace(int op, pid_t pid, void *addr, void *data)
23*ec4bb8e8SBenjamin Berg {
24*ec4bb8e8SBenjamin Berg 	return my_syscall4(__NR_ptrace, op, pid, addr, data);
25*ec4bb8e8SBenjamin Berg }
26*ec4bb8e8SBenjamin Berg 
27*ec4bb8e8SBenjamin Berg static __attribute__((unused))
28*ec4bb8e8SBenjamin Berg ssize_t ptrace(int op, pid_t pid, void *addr, void *data)
29*ec4bb8e8SBenjamin Berg {
30*ec4bb8e8SBenjamin Berg 	return __sysret(sys_ptrace(op, pid, addr, data));
31*ec4bb8e8SBenjamin Berg }
32*ec4bb8e8SBenjamin Berg 
33*ec4bb8e8SBenjamin Berg #endif /* _NOLIBC_SYS_PTRACE_H */
34