Lines Matching refs:pp
93 struct process *fp, *pp; in pchild() local
109 for (pp = proclist.p_next; pp != NULL; pp = pp->p_next) in pchild()
110 if (pid == pp->p_pid) in pchild()
116 pp->p_flags &= ~(PRUNNING | PSTOPPED | PREPORTED); in pchild()
118 pp->p_flags |= PSTOPPED; in pchild()
119 pp->p_reason = WSTOPSIG(w); in pchild()
122 if (pp->p_flags & (PTIME | PPTIME) || adrof(STRtime)) in pchild()
123 (void)clock_gettime(CLOCK_MONOTONIC, &pp->p_etime); in pchild()
125 pp->p_rusage = ru; in pchild()
128 pp->p_flags |= PINTERRUPTED; in pchild()
130 pp->p_flags |= PSIGNALED; in pchild()
132 pp->p_flags |= PDUMPED; in pchild()
133 pp->p_reason = WTERMSIG(w); in pchild()
136 pp->p_reason = WEXITSTATUS(w); in pchild()
137 if (pp->p_reason != 0) in pchild()
138 pp->p_flags |= PAEXITED; in pchild()
140 pp->p_flags |= PNEXITED; in pchild()
144 fp = pp; in pchild()
152 } while ((fp = fp->p_friends) != pp); in pchild()
153 pp->p_flags &= ~PFOREGND; in pchild()
154 if (pp == pp->p_friends && (pp->p_flags & PPTIME)) { in pchild()
155 pp->p_flags &= ~PPTIME; in pchild()
156 pp->p_flags |= PTIME; in pchild()
159 fp = pp; in pchild()
163 } while ((fp = fp->p_friends) != pp); in pchild()
191 (void)pprint(pp, NUMBER | NAME | REASON); in pchild()
193 pflush(pp); in pchild()
207 struct process *pp; in pnote() local
214 for (pp = proclist.p_next; pp != NULL; pp = pp->p_next) { in pnote()
215 if (pp->p_flags & PNEEDNOTE) { in pnote()
217 pp->p_flags &= ~PNEEDNOTE; in pnote()
218 flags = pprint(pp, NUMBER | NAME | REASON); in pnote()
220 pflush(pp); in pnote()
233 struct process *fp, *pp; in pwait() local
242 for (pp = (fp = &proclist)->p_next; pp != NULL; pp = (fp = pp)->p_next) in pwait()
243 if (pp->p_pid == 0) { in pwait()
244 fp->p_next = pp->p_next; in pwait()
245 free(pp->p_command); in pwait()
246 if (pp->p_cwd && --pp->p_cwd->di_count == 0) in pwait()
247 if (pp->p_cwd->di_next == 0) in pwait()
248 dfree(pp->p_cwd); in pwait()
249 free(pp); in pwait()
250 pp = fp; in pwait()
262 pjwait(struct process *pp) in pjwait() argument
268 while (pp->p_pid != pp->p_jobid) in pjwait()
269 pp = pp->p_friends; in pjwait()
270 fp = pp; in pjwait()
275 } while ((fp = fp->p_friends) != pp); in pjwait()
280 fp = pp; in pjwait()
291 while ((fp = (fp->p_friends)) != pp); in pjwait()
320 (void)pprint(pp, SHELLDIR); in pjwait()
323 (void)pprint(pp, AREASON | SHELLDIR); in pjwait()
326 (void)pprint(pp, AREASON | SHELLDIR); in pjwait()
331 pflush(pp); in pjwait()
335 fp = pp; in pjwait()
340 } while ((fp = fp->p_friends) != pp); in pjwait()
347 pflush(pp); in pjwait()
357 struct process *pp; in dowait() local
365 for (pp = proclist.p_next; pp; pp = pp->p_next) in dowait()
366 if (pp->p_pid && /* pp->p_pid == pp->p_jobid && */ in dowait()
367 pp->p_flags & PRUNNING) { in dowait()
382 struct process *pp; in pflushall() local
384 for (pp = proclist.p_next; pp != NULL; pp = pp->p_next) in pflushall()
385 if (pp->p_pid) in pflushall()
386 pflush(pp); in pflushall()
395 pflush(struct process *pp) in pflush() argument
400 if (pp->p_pid == 0) { in pflush()
404 while (pp->p_pid != pp->p_jobid) in pflush()
405 pp = pp->p_friends; in pflush()
406 pclrcurr(pp); in pflush()
407 if (pp == pcurrjob) in pflush()
409 idx = pp->p_index; in pflush()
410 np = pp; in pflush()
414 } while ((np = np->p_friends) != pp); in pflush()
428 pclrcurr(struct process *pp) in pclrcurr() argument
430 if (pp == pcurrent) { in pclrcurr()
433 pprevious = pgetcurr(pp); in pclrcurr()
436 pcurrent = pgetcurr(pp); in pclrcurr()
437 pprevious = pgetcurr(pp); in pclrcurr()
439 } else if (pp == pprevious) in pclrcurr()
440 pprevious = pgetcurr(pp); in pclrcurr()
455 struct process *pp; in palloc() local
458 pp = xcalloc(1, sizeof(*pp)); in palloc()
459 pp->p_pid = pid; in palloc()
460 pp->p_flags = t->t_dflg & F_AMPERSAND ? PRUNNING : PRUNNING | PFOREGND; in palloc()
462 pp->p_flags |= PPTIME; in palloc()
468 pp->p_flags |= PPOU; in palloc()
470 pp->p_flags |= PERR; in palloc()
472 pp->p_command = Strsave(command); in palloc()
477 pp->p_cwd = 0; in palloc()
478 pp->p_index = pcurrjob->p_index; in palloc()
479 pp->p_friends = pcurrjob; in palloc()
480 pp->p_jobid = pcurrjob->p_pid; in palloc()
483 fp->p_friends = pp; in palloc()
486 pcurrjob = pp; in palloc()
487 pp->p_jobid = pid; in palloc()
488 pp->p_friends = pp; in palloc()
489 pp->p_cwd = dcwd; in palloc()
492 pp->p_index = ++pmaxindex; in palloc()
500 pp->p_index = i; in palloc()
508 pcurrent = pp; in palloc()
510 pprevious = pp; in palloc()
512 pp->p_next = proclist.p_next; in palloc()
513 proclist.p_next = pp; in palloc()
514 (void)clock_gettime(CLOCK_MONOTONIC, &pp->p_btime); in palloc()
629 struct process *pp, *tp; in pendjob() local
632 pp = pcurrjob; in pendjob()
633 while (pp->p_pid != pp->p_jobid) in pendjob()
634 pp = pp->p_friends; in pendjob()
635 (void)fprintf(cshout, "[%d]", pp->p_index); in pendjob()
636 tp = pp; in pendjob()
638 (void)fprintf(cshout, " %ld", (long)pp->p_pid); in pendjob()
639 pp = pp->p_friends; in pendjob()
640 } while (pp != tp); in pendjob()
650 pprint(struct process *pp, int flag) in pprint() argument
661 while (pp->p_pid != pp->p_jobid) in pprint()
662 pp = pp->p_friends; in pprint()
663 if (pp == pp->p_friends && (pp->p_flags & PPTIME)) { in pprint()
664 pp->p_flags &= ~PPTIME; in pprint()
665 pp->p_flags |= PTIME; in pprint()
667 tp = pp; in pprint()
671 jobflags |= pp->p_flags; in pprint()
672 pstatus = pp->p_flags & PALLSTATES; in pprint()
673 if (tp != pp && !hadnl && !(flag & FANCY) && in pprint()
674 ((pstatus == status && pp->p_reason == reason) || in pprint()
680 if (tp != pp && !hadnl) { in pprint()
685 if (pp == tp) in pprint()
686 (void)fprintf(cshout, "[%d]%s %c ", pp->p_index, in pprint()
687 pp->p_index < 10 ? " " : "", in pprint()
688 pp == pcurrent ? '+' : in pprint()
689 (pp == pprevious ? '-' : ' ')); in pprint()
695 (void)fprintf(cshout, "%5ld ", (long)pp->p_pid); in pprint()
704 if (pp->p_reason == reason) { in pprint()
710 reason = pp->p_reason; in pprint()
713 reason = pp->p_reason; in pprint()
732 || (pp->p_flags & PPOU) == 0))) { in pprint()
735 pp->p_reason]); in pprint()
742 if (pp->p_reason) in pprint()
743 (void)fprintf(cshout, "Exit %-18d", pp->p_reason); in pprint()
756 (void)fprintf(cshout, "%s", vis_str(pp->p_command)); in pprint()
757 if (pp->p_flags & PPOU) in pprint()
759 if (pp->p_flags & PERR) in pprint()
763 if (flag & (REASON | AREASON) && pp->p_flags & PDUMPED) { in pprint()
767 if (tp == pp->p_friends) { in pprint()
780 if (pp->p_flags & PPTIME && !(status & (PSTOPPED | PRUNNING))) { in pprint()
783 prusage(cshout, &zru, &pp->p_rusage, &pp->p_etime, in pprint()
784 &pp->p_btime); in pprint()
787 if (tp == pp->p_friends) { in pprint()
799 } while ((pp = pp->p_friends) != tp); in pprint()
817 struct process *pp; in ptprint() local
819 pp = tp; in ptprint()
823 ruadd(&ru, &pp->p_rusage); in ptprint()
824 timespecsub(&pp->p_etime, &pp->p_btime, &diff); in ptprint()
827 } while ((pp = pp->p_friends) != tp); in ptprint()
838 struct process *pp; in dojobs() local
859 for (pp = proclist.p_next; pp; pp = pp->p_next) in dojobs()
860 if (pp->p_index == i && pp->p_pid == pp->p_jobid) { in dojobs()
861 pp->p_flags &= ~PNEEDNOTE; in dojobs()
862 if (!(pprint(pp, flag) & (PRUNNING | PSTOPPED))) in dojobs()
863 pflush(pp); in dojobs()
875 struct process *pp; in dofg() local
880 pp = pfind(*v); in dofg()
881 pstart(pp, 1); in dofg()
882 pjwait(pp); in dofg()
893 struct process *pp; in dofg1() local
896 pp = pfind(v[0]); in dofg1()
897 pstart(pp, 1); in dofg1()
898 pjwait(pp); in dofg1()
908 struct process *pp; in dobg() local
913 pp = pfind(*v); in dobg()
914 pstart(pp, 0); in dobg()
925 struct process *pp; in dobg1() local
927 pp = pfind(v[0]); in dobg1()
928 pstart(pp, 0); in dobg1()
1016 struct process *pp, *np; in pkill() local
1042 np = pp = pfind(cp); in pkill()
1045 while ((np = np->p_friends) != pp); in pkill()
1063 pstart(pp, 0); in pkill()
1066 if (kill(-pp->p_jobid, signum) < 0) { in pkill()
1072 (void)kill(-pp->p_jobid, SIGCONT); in pkill()
1105 pstart(struct process *pp, int foregnd) in pstart() argument
1115 np = pp; in pstart()
1126 } while ((np = np->p_friends) != pp); in pstart()
1128 pclrcurr(pp); in pstart()
1129 (void)pprint(pp, foregnd ? NAME | JOBDIR : NUMBER | NAME | AMPERSAND); in pstart()
1131 (void)tcsetpgrp(FSHTTY, pp->p_jobid); in pstart()
1133 (void)kill(-pp->p_jobid, SIGCONT); in pstart()
1140 struct process *pp; in panystop() local
1143 for (pp = proclist.p_next; pp; pp = pp->p_next) in panystop()
1144 if (pp->p_flags & PSTOPPED) in panystop()
1151 struct process *pp, *np; in pfind() local
1166 for (pp = proclist.p_next; pp; pp = pp->p_next) in pfind()
1167 if (pp->p_index == idx && pp->p_pid == pp->p_jobid) in pfind()
1168 return (pp); in pfind()
1172 for (pp = proclist.p_next; pp; pp = pp->p_next) in pfind()
1173 if (pp->p_pid == pp->p_jobid) { in pfind()
1177 for (dp = pp->p_command; *dp; dp++) { in pfind()
1184 else if (prefix(cp + 1, pp->p_command)) { in pfind()
1188 np = pp; in pfind()
1201 pgetcurr(struct process *pp) in pgetcurr() argument
1207 if (np != pcurrent && np != pp && np->p_pid && in pgetcurr()
1224 struct process *pp; in donotify() local
1226 pp = pfind(*++v); in donotify()
1227 pp->p_flags |= PNOTIFY; in donotify()