Lines Matching +full:- +full:- +full:pid
1 /*-
2 * SPDX-License-Identifier: BSD-2-Clause
7 * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
122 linux_ptrace_status(struct thread *td, pid_t pid, int status) in linux_ptrace_status() argument
129 saved_retval = td->td_retval[0]; in linux_ptrace_status()
130 error = kern_ptrace(td, PT_LWPINFO, pid, &lwpinfo, sizeof(lwpinfo)); in linux_ptrace_status()
131 td->td_retval[0] = saved_retval; in linux_ptrace_status()
137 pem = pem_find(td->td_proc); in linux_ptrace_status()
141 if ((pem->ptrace_flags & LINUX_PTRACE_O_TRACESYSGOOD) && in linux_ptrace_status()
144 if ((pem->ptrace_flags & LINUX_PTRACE_O_TRACESYSGOOD) && in linux_ptrace_status()
151 if ((pem->ptrace_flags & LINUX_PTRACE_O_TRACEEXIT) && in linux_ptrace_status()
160 linux_ptrace_peek(struct thread *td, pid_t pid, void *addr, void *data) in linux_ptrace_peek() argument
164 error = kern_ptrace(td, PT_READ_I, pid, addr, 0); in linux_ptrace_peek()
166 error = copyout(td->td_retval, data, sizeof(l_int)); in linux_ptrace_peek()
169 td->td_retval[0] = error; in linux_ptrace_peek()
175 linux_ptrace_setoptions(struct thread *td, pid_t pid, l_ulong data) in linux_ptrace_setoptions() argument
189 pem = pem_find(td->td_proc); in linux_ptrace_setoptions()
198 pem->ptrace_flags |= LINUX_PTRACE_O_TRACESYSGOOD; in linux_ptrace_setoptions()
200 pem->ptrace_flags &= ~LINUX_PTRACE_O_TRACESYSGOOD; in linux_ptrace_setoptions()
220 pem->ptrace_flags |= LINUX_PTRACE_O_TRACEEXIT; in linux_ptrace_setoptions()
222 pem->ptrace_flags &= ~LINUX_PTRACE_O_TRACEEXIT; in linux_ptrace_setoptions()
225 return (kern_ptrace(td, PT_SET_EVENT_MASK, pid, &mask, sizeof(mask))); in linux_ptrace_setoptions()
229 linux_ptrace_geteventmsg(struct thread *td, pid_t pid, l_ulong data) in linux_ptrace_geteventmsg() argument
237 linux_ptrace_getsiginfo(struct thread *td, pid_t pid, l_ulong data) in linux_ptrace_getsiginfo() argument
243 error = kern_ptrace(td, PT_LWPINFO, pid, &lwpinfo, sizeof(lwpinfo)); in linux_ptrace_getsiginfo()
263 linux_ptrace_getregs(struct thread *td, pid_t pid, void *data) in linux_ptrace_getregs() argument
269 error = kern_ptrace(td, PT_GETREGS, pid, &b_reg, 0); in linux_ptrace_getregs()
274 error = linux_ptrace_getregs_machdep(td, pid, &l_regset); in linux_ptrace_getregs()
283 linux_ptrace_setregs(struct thread *td, pid_t pid, void *data) in linux_ptrace_setregs() argument
293 error = kern_ptrace(td, PT_SETREGS, pid, &b_reg, 0); in linux_ptrace_setregs()
298 linux_ptrace_getregset_prstatus(struct thread *td, pid_t pid, l_ulong data) in linux_ptrace_getregset_prstatus() argument
312 error = kern_ptrace(td, PT_GETREGS, pid, &b_reg, 0); in linux_ptrace_getregset_prstatus()
317 error = linux_ptrace_getregs_machdep(td, pid, &l_regset); in linux_ptrace_getregset_prstatus()
339 linux_ptrace_getregset(struct thread *td, pid_t pid, l_ulong addr, l_ulong data) in linux_ptrace_getregset() argument
344 return (linux_ptrace_getregset_prstatus(td, pid, data)); in linux_ptrace_getregset()
361 linux_ptrace_seize(struct thread *td, pid_t pid, l_ulong addr, l_ulong data) in linux_ptrace_seize() argument
369 linux_ptrace_get_syscall_info(struct thread *td, pid_t pid, in linux_ptrace_get_syscall_info() argument
378 error = kern_ptrace(td, PT_LWPINFO, pid, &lwpinfo, sizeof(lwpinfo)); in linux_ptrace_get_syscall_info()
389 error = kern_ptrace(td, PTLINUX_GET_SC_ARGS, pid, in linux_ptrace_get_syscall_info()
398 error = kern_ptrace(td, PT_GET_SC_RET, pid, &sr, sizeof(sr)); in linux_ptrace_get_syscall_info()
419 si.exit.rval = -LINUX_ERESTARTSYS; in linux_ptrace_get_syscall_info()
429 error = kern_ptrace(td, PT_GETREGS, pid, &b_reg, 0); in linux_ptrace_get_syscall_info()
438 td->td_retval[0] = sizeof(si); in linux_ptrace_get_syscall_info()
447 pid_t pid; in linux_ptrace() local
453 pid = (pid_t)uap->pid; in linux_ptrace()
454 addr = (void *)uap->addr; in linux_ptrace()
456 switch (uap->req) { in linux_ptrace()
462 error = linux_ptrace_peek(td, pid, addr, (void *)uap->data); in linux_ptrace()
468 error = linux_ptrace_peek(td, pid, in linux_ptrace()
469 (void *)(uap->addr + 4), (void *)(uap->data + 4)); in linux_ptrace()
472 error = linux_ptrace_peekuser(td, pid, addr, (void *)uap->data); in linux_ptrace()
476 error = kern_ptrace(td, PT_WRITE_D, pid, addr, uap->data); in linux_ptrace()
482 error = kern_ptrace(td, PT_WRITE_D, pid, in linux_ptrace()
483 (void *)(uap->addr + 4), uap->data >> 32); in linux_ptrace()
486 error = linux_ptrace_pokeuser(td, pid, addr, (void *)uap->data); in linux_ptrace()
489 error = map_signum(uap->data, &sig); in linux_ptrace()
492 error = kern_ptrace(td, PT_CONTINUE, pid, (void *)1, sig); in linux_ptrace()
495 error = kern_ptrace(td, PT_KILL, pid, addr, uap->data); in linux_ptrace()
498 error = map_signum(uap->data, &sig); in linux_ptrace()
501 error = kern_ptrace(td, PT_STEP, pid, (void *)1, sig); in linux_ptrace()
504 error = linux_ptrace_getregs(td, pid, (void *)uap->data); in linux_ptrace()
507 error = linux_ptrace_setregs(td, pid, (void *)uap->data); in linux_ptrace()
510 error = kern_ptrace(td, PT_ATTACH, pid, addr, uap->data); in linux_ptrace()
513 error = map_signum(uap->data, &sig); in linux_ptrace()
516 error = kern_ptrace(td, PT_DETACH, pid, (void *)1, sig); in linux_ptrace()
519 error = map_signum(uap->data, &sig); in linux_ptrace()
522 error = kern_ptrace(td, PT_SYSCALL, pid, (void *)1, sig); in linux_ptrace()
525 error = linux_ptrace_setoptions(td, pid, uap->data); in linux_ptrace()
528 error = linux_ptrace_geteventmsg(td, pid, uap->data); in linux_ptrace()
531 error = linux_ptrace_getsiginfo(td, pid, uap->data); in linux_ptrace()
534 error = linux_ptrace_getregset(td, pid, uap->addr, uap->data); in linux_ptrace()
537 error = linux_ptrace_seize(td, pid, uap->addr, uap->data); in linux_ptrace()
540 error = linux_ptrace_get_syscall_info(td, pid, uap->addr, uap->data); in linux_ptrace()
544 "returning EINVAL", uap->req); in linux_ptrace()