Lines Matching refs:pid
27 int is_skas_winch(int pid, int fd, void *data)
29 return pid == getpgrp();
80 static int ptrace_dump_regs(int pid)
85 if (ptrace(PTRACE_GETREGS, pid, 0, regs) < 0)
107 void wait_stub_done(int pid)
112 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED | __WALL));
119 err = ptrace(PTRACE_CONT, pid, 0, 0);
131 err = ptrace_dump_regs(pid);
135 printk(UM_KERN_ERR "%s : failed to wait for SIGTRAP, pid = %d, n = %d, errno = %d, status = 0x%x\n",
136 __func__, pid, n, errno, status);
142 static void get_skas_faultinfo(int pid, struct faultinfo *fi, unsigned long *aux_fp_regs)
146 err = get_fp_registers(pid, aux_fp_regs);
152 err = ptrace(PTRACE_CONT, pid, 0, SIGSEGV);
154 printk(UM_KERN_ERR "Failed to continue stub, pid = %d, "
155 "errno = %d\n", pid, errno);
158 wait_stub_done(pid);
166 err = put_fp_registers(pid, aux_fp_regs);
174 static void handle_segv(int pid, struct uml_pt_regs *regs, unsigned long *aux_fp_regs)
176 get_skas_faultinfo(pid, ®s->faultinfo, aux_fp_regs);
184 static void handle_trap(int pid, struct uml_pt_regs *regs,
194 err = ptrace(PTRACE_POKEUSER, pid, PT_SYSCALL_NR_OFFSET,
202 err = ptrace(PTRACE_SYSCALL, pid, 0, 0);
209 CATCH_EINTR(err = waitpid(pid, &status, WUNTRACED | __WALL));
212 err = ptrace_dump_regs(pid);
314 int pid, status, n, flags, err;
333 pid = clone(userspace_tramp, (void *) sp, flags, (void *) stub_stack);
334 if (pid < 0) {
342 CATCH_EINTR(n = waitpid(pid, &status, WUNTRACED | __WALL));
358 if (ptrace(PTRACE_OLDSETOPTIONS, pid, NULL,
373 return pid;
376 os_kill_ptraced_process(pid, 1);
382 int err, status, op, pid = userspace_pid[0];
402 if (ptrace(PTRACE_SETREGS, pid, 0, regs->gp)) {
408 if (put_fp_registers(pid, regs->fp)) {
420 if (ptrace(op, pid, 0, 0)) {
426 CATCH_EINTR(err = waitpid(pid, &status, WUNTRACED | __WALL));
434 if (ptrace(PTRACE_GETREGS, pid, 0, regs->gp)) {
440 if (get_fp_registers(pid, regs->fp)) {
462 ptrace(PTRACE_GETSIGINFO, pid, 0, (struct siginfo *)&si);
469 get_skas_faultinfo(pid,
474 else handle_segv(pid, regs, aux_fp_regs);
477 handle_trap(pid, regs, local_using_sysemu);
498 pid = userspace_pid[0];
528 int copy_context_skas0(unsigned long new_stack, int pid)
552 err = ptrace_setregs(pid, thread_regs);
555 printk(UM_KERN_ERR "%s : PTRACE_SETREGS failed, pid = %d, errno = %d\n",
556 __func__, pid, -err);
560 err = put_fp_registers(pid, thread_fp_regs);
562 printk(UM_KERN_ERR "%s : put_fp_registers failed, pid = %d, err = %d\n",
563 __func__, pid, err);
568 * Wait, until parent has finished its work: read child's pid from
571 err = ptrace(PTRACE_CONT, pid, 0, 0);
574 printk(UM_KERN_ERR "Failed to continue new process, pid = %d, errno = %d\n",
575 pid, errno);
579 wait_stub_done(pid);
581 pid = data->parent_err;
582 if (pid < 0) {
584 __func__, -pid);
585 return pid;
592 wait_stub_done(pid);
595 __func__, pid, data->child_err);
600 if (ptrace(PTRACE_OLDSETOPTIONS, pid, NULL,
608 return pid;
611 os_kill_ptraced_process(pid, 1);
730 userspace_pid[0] = mm_idp->u.pid;