Lines Matching refs:cp

142 	cstatus_t *cp;  in ptrace()  local
216 if ((cp = GrabProc(pid)) == NULLCP) in ptrace()
219 ps = &cp->pstatus; in ptrace()
221 if (ProcUpdate(cp) != 0) { in ptrace()
222 ReleaseProc(cp); in ptrace()
238 if (pread(cp->asfd, (char *)&data, sizeof (data), (off_t)addr) in ptrace()
252 GetPsargs(cp); in ptrace()
254 GetSignal(cp); in ptrace()
257 data = *((int *)((caddr_t)(&cp->user) + xaddr)); in ptrace()
268 if (xaddr >= (unsigned)cp->user.u_reg[REG_SP] && in ptrace()
269 xaddr < (unsigned)cp->user.u_reg[REG_SP]+16*sizeof (int)) in ptrace()
270 cp->flags |= CS_SETREGS; in ptrace()
271 if (pwrite(cp->asfd, (char *)&data, sizeof (data), (off_t)addr) in ptrace()
287 data = (cp->user.u_reg[REG_PS] & in ptrace()
291 cp->user.u_reg[rx] = data; in ptrace()
292 cp->flags |= CS_SETREGS; in ptrace()
303 if (cp->flags & CS_SETREGS) { in ptrace()
307 ps->pr_lwp.pr_reg[R_PSR] = cp->user.u_reg[REG_PSR]; in ptrace()
308 ps->pr_lwp.pr_reg[R_PC] = cp->user.u_reg[REG_PC]; in ptrace()
309 ps->pr_lwp.pr_reg[R_nPC] = cp->user.u_reg[REG_nPC]; in ptrace()
310 ps->pr_lwp.pr_reg[R_Y] = cp->user.u_reg[REG_Y]; in ptrace()
311 ps->pr_lwp.pr_reg[R_G1] = cp->user.u_reg[REG_G1]; in ptrace()
312 ps->pr_lwp.pr_reg[R_G2] = cp->user.u_reg[REG_G2]; in ptrace()
313 ps->pr_lwp.pr_reg[R_G3] = cp->user.u_reg[REG_G3]; in ptrace()
314 ps->pr_lwp.pr_reg[R_G4] = cp->user.u_reg[REG_G4]; in ptrace()
315 ps->pr_lwp.pr_reg[R_G5] = cp->user.u_reg[REG_G5]; in ptrace()
316 ps->pr_lwp.pr_reg[R_G6] = cp->user.u_reg[REG_G6]; in ptrace()
317 ps->pr_lwp.pr_reg[R_G7] = cp->user.u_reg[REG_G7]; in ptrace()
318 ps->pr_lwp.pr_reg[R_O0] = cp->user.u_reg[REG_O0]; in ptrace()
319 ps->pr_lwp.pr_reg[R_O1] = cp->user.u_reg[REG_O1]; in ptrace()
320 ps->pr_lwp.pr_reg[R_O2] = cp->user.u_reg[REG_O2]; in ptrace()
321 ps->pr_lwp.pr_reg[R_O3] = cp->user.u_reg[REG_O3]; in ptrace()
322 ps->pr_lwp.pr_reg[R_O4] = cp->user.u_reg[REG_O4]; in ptrace()
323 ps->pr_lwp.pr_reg[R_O5] = cp->user.u_reg[REG_O5]; in ptrace()
324 ps->pr_lwp.pr_reg[R_O6] = cp->user.u_reg[REG_O6]; in ptrace()
325 ps->pr_lwp.pr_reg[R_O7] = cp->user.u_reg[REG_O7]; in ptrace()
326 (void) pread(cp->asfd, (char *)&ps->pr_lwp.pr_reg[R_L0], in ptrace()
327 16*sizeof (int), (off_t)cp->user.u_reg[REG_SP]); in ptrace()
333 if (writev(cp->ctlfd, iov, 2) < 0) in ptrace()
337 (addr & ~03) != cp->user.u_reg[REG_PC]) { in ptrace()
340 if (write(cp->ctlfd, (char *)runctl, 2*sizeof (long)) in ptrace()
350 if (write(cp->ctlfd, (char *)&ctl, in ptrace()
361 if (write(cp->ctlfd, (char *)runctl, 3*sizeof (long)) in ptrace()
365 ReleaseProc(cp); in ptrace()
372 cp->flags = 0; in ptrace()
382 (void) write(cp->ctlfd, (char *)&ctl, in ptrace()
385 ReleaseProc(cp); in ptrace()
395 if (OpenProc(cp) == 0) in ptrace()
397 ReleaseProc(cp); in ptrace()
415 cstatus_t *cp; in FindProc() local
417 for (cp = childp; cp != NULLCP; cp = cp->next) in FindProc()
418 if (cp->pid == pid) in FindProc()
421 return (cp); in FindProc()
431 cstatus_t *cp = childp; in CheckAllProcs() local
433 while (cp != NULLCP) { in CheckAllProcs()
434 cstatus_t *next = cp->next; in CheckAllProcs()
436 if (ProcUpdate(cp) != 0) in CheckAllProcs()
437 ReleaseProc(cp); in CheckAllProcs()
438 cp = next; in CheckAllProcs()
485 OpenProc(cstatus_t *cp) in OpenProc() argument
492 MakeProcName(procname, cp->pid); in OpenProc()
498 omode = (cp->asfd > 0)? O_RDWR : (O_RDWR|O_EXCL); in OpenProc()
501 (cp->asfd = Dupfd(fd, cp->asfd)) < 0) in OpenProc()
506 (cp->ctlfd = Dupfd(fd, cp->ctlfd)) < 0) in OpenProc()
511 (cp->statusfd = Dupfd(fd, cp->statusfd)) < 0) in OpenProc()
517 CloseProc(cp); in OpenProc()
525 CloseProc(cstatus_t *cp) in CloseProc() argument
527 if (cp->asfd > 0) in CloseProc()
528 (void) close(cp->asfd); in CloseProc()
529 if (cp->ctlfd > 0) in CloseProc()
530 (void) close(cp->ctlfd); in CloseProc()
531 if (cp->statusfd > 0) in CloseProc()
532 (void) close(cp->statusfd); in CloseProc()
533 cp->asfd = 0; in CloseProc()
534 cp->ctlfd = 0; in CloseProc()
535 cp->statusfd = 0; in CloseProc()
544 cstatus_t *cp; in GrabProc() local
551 if ((cp = FindProc(pid)) != NULLCP) /* already grabbed */ in GrabProc()
552 return (cp); in GrabProc()
556 cp = (cstatus_t *)malloc(sizeof (cstatus_t)); in GrabProc()
557 if (cp == NULLCP) in GrabProc()
559 (void) memset((char *)cp, 0, sizeof (cstatus_t)); in GrabProc()
560 cp->pid = pid; in GrabProc()
563 while (OpenProc(cp) == 0) { in GrabProc()
568 if (pread(cp->statusfd, (char *)&cp->pstatus, in GrabProc()
569 sizeof (cp->pstatus), (off_t)0) == sizeof (cp->pstatus) && in GrabProc()
570 cp->pstatus.pr_ppid == ppid && in GrabProc()
571 (cp->pstatus.pr_flags & PR_PTRACE) && in GrabProc()
572 write(cp->ctlfd, (char *)ctl, 2*sizeof (long)) in GrabProc()
574 cp->next = childp; in GrabProc()
575 childp = cp; in GrabProc()
576 MakeUser(cp); in GrabProc()
577 return (cp); in GrabProc()
584 free((char *)cp); in GrabProc()
593 ReleaseProc(cstatus_t *cp) in ReleaseProc() argument
595 CloseProc(cp); in ReleaseProc()
597 if (childp == cp) in ReleaseProc()
598 childp = cp->next; in ReleaseProc()
603 if (pcp->next == cp) { in ReleaseProc()
604 pcp->next = cp->next; in ReleaseProc()
610 free((char *)cp); in ReleaseProc()
618 ProcUpdate(cstatus_t *cp) in ProcUpdate() argument
620 pstatus_t *ps = &cp->pstatus; in ProcUpdate()
622 if (cp->flags & CS_SETREGS) { in ProcUpdate()
626 ps->pr_lwp.pr_reg[R_PSR] = cp->user.u_reg[REG_PSR]; in ProcUpdate()
627 ps->pr_lwp.pr_reg[R_PC] = cp->user.u_reg[REG_PC]; in ProcUpdate()
628 ps->pr_lwp.pr_reg[R_nPC] = cp->user.u_reg[REG_nPC]; in ProcUpdate()
629 ps->pr_lwp.pr_reg[R_Y] = cp->user.u_reg[REG_Y]; in ProcUpdate()
630 ps->pr_lwp.pr_reg[R_G1] = cp->user.u_reg[REG_G1]; in ProcUpdate()
631 ps->pr_lwp.pr_reg[R_G2] = cp->user.u_reg[REG_G2]; in ProcUpdate()
632 ps->pr_lwp.pr_reg[R_G3] = cp->user.u_reg[REG_G3]; in ProcUpdate()
633 ps->pr_lwp.pr_reg[R_G4] = cp->user.u_reg[REG_G4]; in ProcUpdate()
634 ps->pr_lwp.pr_reg[R_G5] = cp->user.u_reg[REG_G5]; in ProcUpdate()
635 ps->pr_lwp.pr_reg[R_G6] = cp->user.u_reg[REG_G6]; in ProcUpdate()
636 ps->pr_lwp.pr_reg[R_G7] = cp->user.u_reg[REG_G7]; in ProcUpdate()
637 ps->pr_lwp.pr_reg[R_O0] = cp->user.u_reg[REG_O0]; in ProcUpdate()
638 ps->pr_lwp.pr_reg[R_O1] = cp->user.u_reg[REG_O1]; in ProcUpdate()
639 ps->pr_lwp.pr_reg[R_O2] = cp->user.u_reg[REG_O2]; in ProcUpdate()
640 ps->pr_lwp.pr_reg[R_O3] = cp->user.u_reg[REG_O3]; in ProcUpdate()
641 ps->pr_lwp.pr_reg[R_O4] = cp->user.u_reg[REG_O4]; in ProcUpdate()
642 ps->pr_lwp.pr_reg[R_O5] = cp->user.u_reg[REG_O5]; in ProcUpdate()
643 ps->pr_lwp.pr_reg[R_O6] = cp->user.u_reg[REG_O6]; in ProcUpdate()
644 ps->pr_lwp.pr_reg[R_O7] = cp->user.u_reg[REG_O7]; in ProcUpdate()
645 (void) pread(cp->asfd, (char *)&ps->pr_lwp.pr_reg[R_L0], in ProcUpdate()
646 16*sizeof (int), (off_t)cp->user.u_reg[REG_SP]); in ProcUpdate()
652 (void) writev(cp->ctlfd, iov, 2); in ProcUpdate()
653 cp->flags &= ~CS_SETREGS; in ProcUpdate()
656 while (pread(cp->statusfd, (char *)ps, sizeof (*ps), (off_t)0) < 0) { in ProcUpdate()
659 !(errno == EAGAIN && OpenProc(cp) == 0)) in ProcUpdate()
664 MakeUser(cp); in ProcUpdate()
675 MakeUser(cstatus_t *cp) in MakeUser() argument
677 pstatus_t *ps = &cp->pstatus; in MakeUser()
679 cp->user.u_reg[REG_PSR] = ps->pr_lwp.pr_reg[R_PSR]; in MakeUser()
680 cp->user.u_reg[REG_PC] = ps->pr_lwp.pr_reg[R_PC]; in MakeUser()
681 cp->user.u_reg[REG_nPC] = ps->pr_lwp.pr_reg[R_nPC]; in MakeUser()
682 cp->user.u_reg[REG_Y] = ps->pr_lwp.pr_reg[R_Y]; in MakeUser()
683 cp->user.u_reg[REG_G1] = ps->pr_lwp.pr_reg[R_G1]; in MakeUser()
684 cp->user.u_reg[REG_G2] = ps->pr_lwp.pr_reg[R_G2]; in MakeUser()
685 cp->user.u_reg[REG_G3] = ps->pr_lwp.pr_reg[R_G3]; in MakeUser()
686 cp->user.u_reg[REG_G4] = ps->pr_lwp.pr_reg[R_G4]; in MakeUser()
687 cp->user.u_reg[REG_G5] = ps->pr_lwp.pr_reg[R_G5]; in MakeUser()
688 cp->user.u_reg[REG_G6] = ps->pr_lwp.pr_reg[R_G6]; in MakeUser()
689 cp->user.u_reg[REG_G7] = ps->pr_lwp.pr_reg[R_G7]; in MakeUser()
690 cp->user.u_reg[REG_O0] = ps->pr_lwp.pr_reg[R_O0]; in MakeUser()
691 cp->user.u_reg[REG_O1] = ps->pr_lwp.pr_reg[R_O1]; in MakeUser()
692 cp->user.u_reg[REG_O2] = ps->pr_lwp.pr_reg[R_O2]; in MakeUser()
693 cp->user.u_reg[REG_O3] = ps->pr_lwp.pr_reg[R_O3]; in MakeUser()
694 cp->user.u_reg[REG_O4] = ps->pr_lwp.pr_reg[R_O4]; in MakeUser()
695 cp->user.u_reg[REG_O5] = ps->pr_lwp.pr_reg[R_O5]; in MakeUser()
696 cp->user.u_reg[REG_O6] = ps->pr_lwp.pr_reg[R_O6]; in MakeUser()
697 cp->user.u_reg[REG_O7] = ps->pr_lwp.pr_reg[R_O7]; in MakeUser()
698 cp->user.u_ar0 = (greg_t *)REGADDR; in MakeUser()
699 cp->user.u_code = ps->pr_lwp.pr_info.si_code; in MakeUser()
700 cp->user.u_addr = ps->pr_lwp.pr_info.si_addr; in MakeUser()
701 cp->flags &= ~(CS_PSARGS|CS_SIGNAL); in MakeUser()
708 GetPsargs(cstatus_t *cp) in GetPsargs() argument
713 MakeProcName(procname, cp->pid); in GetPsargs()
716 (void) memset(cp->user.u_psargs, 0, PSARGSZ); in GetPsargs()
719 (void) pread(fd, cp->user.u_psargs, PSARGSZ, in GetPsargs()
723 cp->flags |= CS_PSARGS; in GetPsargs()
730 GetSignal(cstatus_t *cp) in GetSignal() argument
737 MakeProcName(procname, cp->pid); in GetSignal()
745 cp->user.u_signal[i] = action[i].sa_handler; in GetSignal()
746 cp->flags |= CS_SIGNAL; in GetSignal()