Lines Matching defs:pp

51 	struct process *pp;
77 for (pp = proclist.p_next; pp != PNULL; pp = pp->p_next)
78 if (pid == pp->p_pid)
84 pp->p_flags &= ~(PRUNNING|PSTOPPED|PREPORTED);
86 pp->p_flags |= PSTOPPED;
87 pp->p_reason = w.w_stopsig;
89 if (pp->p_flags & (PTIME|PPTIME) || adrof(S_time /* "time" */))
90 (void) gettimeofday(&pp->p_etime, (struct timezone *)0);
91 pp->p_rusage = ru;
94 pp->p_flags |= PINTERRUPTED;
96 pp->p_flags |= PSIGNALED;
98 pp->p_flags |= PDUMPED;
99 pp->p_reason = w.w_termsig;
101 pp->p_reason = w.w_retcode;
102 if (pp->p_reason != 0)
103 pp->p_flags |= PAEXITED;
105 pp->p_flags |= PNEXITED;
109 fp = pp;
117 } while ((fp = fp->p_friends) != pp);
118 pp->p_flags &= ~PFOREGND;
119 if (pp == pp->p_friends && (pp->p_flags & PPTIME)) {
120 pp->p_flags &= ~PPTIME;
121 pp->p_flags |= PTIME;
124 fp = pp;
128 } while ((fp = fp->p_friends) != pp);
149 (void) pprint(pp, NUMBER|NAME|REASON);
151 pflush(pp);
164 struct process *pp;
171 for (pp = proclist.p_next; pp != PNULL; pp = pp->p_next) {
172 if (pp->p_flags & PNEEDNOTE) {
174 pp->p_flags &= ~PNEEDNOTE;
175 flags = pprint(pp, NUMBER|NAME|REASON);
177 pflush(pp);
190 struct process *fp, *pp;
200 for (pp = (fp = &proclist)->p_next; pp != PNULL; pp = (fp = pp)->p_next)
201 if (pp->p_pid == 0) {
202 fp->p_next = pp->p_next;
203 xfree(pp->p_command);
204 if (pp->p_cwd && --pp->p_cwd->di_count == 0)
205 if (pp->p_cwd->di_next == 0)
206 dfree(pp->p_cwd);
207 xfree((tchar *)pp);
208 pp = fp;
219 pjwait(struct process *pp)
227 while (pp->p_pid != pp->p_jobid)
228 pp = pp->p_friends;
229 fp = pp;
233 } while ((fp = fp->p_friends) != pp);
238 fp = pp;
244 while ((fp = (fp->p_friends)) != pp);
278 (void) pprint(pp, AREASON|SHELLDIR);
283 pflush(pp);
288 fp = pp;
293 } while ((fp = fp->p_friends) != pp);
297 pflush(pp);
306 struct process *pp;
315 for (pp = proclist.p_next; pp; pp = pp->p_next)
316 if (pp->p_pid && /* pp->p_pid == pp->p_jobid && */
317 pp->p_flags&PRUNNING) {
331 struct process *pp;
336 for (pp = proclist.p_next; pp != PNULL; pp = pp->p_next)
337 if (pp->p_pid)
338 pflush(pp);
347 pflush(struct process *pp)
355 if (pp->p_pid == 0) {
359 while (pp->p_pid != pp->p_jobid)
360 pp = pp->p_friends;
361 pclrcurr(pp);
362 if (pp == pcurrjob)
364 index = pp->p_index;
365 np = pp;
369 } while ((np = np->p_friends) != pp);
380 * pp MUST be the job leader
383 pclrcurr(struct process *pp)
389 if (pp == pcurrent)
392 pprevious = pgetcurr(pp);
394 pcurrent = pgetcurr(pp);
395 pprevious = pgetcurr(pp);
397 else if (pp == pprevious)
398 pprevious = pgetcurr(pp);
412 struct process *pp;
418 pp = (struct process *)xcalloc(1, sizeof (struct process));
419 pp->p_pid = pid;
420 pp->p_flags = t->t_dflg & FAND ? PRUNNING : PRUNNING|PFOREGND;
422 pp->p_flags |= PPTIME;
428 pp->p_flags |= PPOU;
430 pp->p_flags |= PDIAG;
432 pp->p_command = savestr(command);
436 pp->p_cwd = 0;
437 pp->p_index = pcurrjob->p_index;
438 pp->p_friends = pcurrjob;
439 pp->p_jobid = pcurrjob->p_pid;
442 fp->p_friends = pp;
444 pcurrjob = pp;
445 pp->p_jobid = pid;
446 pp->p_friends = pp;
447 pp->p_cwd = dcwd;
450 pp->p_index = ++pmaxindex;
458 pp->p_index = i;
466 pcurrent = pp;
468 pp->p_next = proclist.p_next;
469 proclist.p_next = pp;
470 (void) gettimeofday(&pp->p_btime, (struct timezone *)0);
593 struct process *pp, *tp;
599 pp = pcurrjob;
600 while (pp->p_pid != pp->p_jobid)
601 pp = pp->p_friends;
602 printf("[%d]", pp->p_index);
603 tp = pp;
605 printf(" %d", pp->p_pid);
606 pp = pp->p_friends;
607 } while (pp != tp);
617 pprint(struct process *pp, int flag)
628 while (pp->p_pid != pp->p_jobid)
629 pp = pp->p_friends;
630 if (pp == pp->p_friends && (pp->p_flags & PPTIME)) {
631 pp->p_flags &= ~PPTIME;
632 pp->p_flags |= PTIME;
634 tp = pp;
638 jobflags |= pp->p_flags;
639 pstatus = pp->p_flags & PALLSTATES;
640 if (tp != pp && linp != linbuf && !(flag&FANCY) &&
641 (pstatus == status && pp->p_reason == reason ||
645 if (tp != pp && linp != linbuf)
648 if (pp == tp)
649 printf("[%d]%s %c ", pp->p_index,
650 pp->p_index < 10 ? " " : "",
651 pp == pcurrent ? '+' :
652 (pp == pprevious ? (tchar) '-'
657 printf("%5d ", pp->p_pid);
664 if (pp->p_reason == reason) {
668 reason = pp->p_reason;
671 reason = pp->p_reason;
686 strsignal(pp->p_reason));
692 if (pp->p_reason)
693 printf("Exit %-16d", pp->p_reason);
705 printf("%t", pp->p_command);
706 if (pp->p_flags & PPOU)
708 if (pp->p_flags & PDIAG)
711 if (flag&(REASON|AREASON) && pp->p_flags&PDUMPED)
713 if (tp == pp->p_friends) {
723 if (pp->p_flags&PPTIME && !(status&(PSTOPPED|PRUNNING))) {
727 prusage(&zru, &pp->p_rusage, &pp->p_etime,
728 &pp->p_btime);
731 if (tp == pp->p_friends) {
740 } while ((pp = pp->p_friends) != tp);
756 struct process *pp = tp;
764 ruadd(&ru, &pp->p_rusage);
765 tvsub(&diff, &pp->p_etime, &pp->p_btime);
768 } while ((pp = pp->p_friends) != tp);
778 struct process *pp;
793 for (pp = proclist.p_next; pp; pp = pp->p_next)
794 if (pp->p_index == i && pp->p_pid == pp->p_jobid) {
795 pp->p_flags &= ~PNEEDNOTE;
796 if (!(pprint(pp, flag) & (PRUNNING|PSTOPPED)))
797 pflush(pp);
808 struct process *pp;
816 pp = pfind(*v);
817 pstart(pp, 1);
818 pjwait(pp);
828 struct process *pp;
834 pp = pfind(v[0]);
835 pstart(pp, 1);
836 pjwait(pp);
845 struct process *pp;
853 pp = pfind(*v);
854 pstart(pp, 0);
864 struct process *pp;
869 pp = pfind(v[0]);
870 pstart(pp, 0);
945 struct process *pp, *np;
960 np = pp = pfind(cp);
963 while ((np = np->p_friends) != pp);
977 if (killpg(pp->p_jobid, signum) < 0) {
984 (void) killpg(pp->p_jobid, SIGCONT);
1011 pstart(struct process *pp, int foregnd)
1020 np = pp;
1031 } while ((np = np->p_friends) != pp);
1034 pclrcurr(pp);
1044 pcurrent = pgetcurr(pp);
1046 pcurrent = pp;
1048 pprevious = pp;
1051 (void) pprint(pp, foregnd ? NAME|JOBDIR : NUMBER|NAME|AMPERSAND);
1053 (void) ioctl(FSHTTY, TIOCSPGRP, (char *)&pp->p_jobid);
1055 (void) killpg(pp->p_jobid, SIGCONT);
1062 struct process *pp;
1068 for (pp = proclist.p_next; pp; pp = pp->p_next)
1069 if (pp->p_flags & PSTOPPED)
1076 struct process *pp, *np;
1096 for (pp = proclist.p_next; pp; pp = pp->p_next)
1097 if (pp->p_index == index && pp->p_pid == pp->p_jobid)
1098 return (pp);
1102 for (pp = proclist.p_next; pp; pp = pp->p_next)
1103 if (pp->p_pid == pp->p_jobid) {
1106 for (dp = pp->p_command; *dp; dp++) {
1112 } else if (prefix(cp+1, pp->p_command)) {
1116 np = pp;
1129 * pgetcurr - find most recent job that is not pp, preferably stopped
1132 pgetcurr(struct process *pp)
1141 if (np != pcurrent && np != pp && np->p_pid &&
1157 struct process *pp;
1162 pp = pfind(*++v);
1163 pp->p_flags |= PNOTIFY;
1295 struct process *pp;
1299 for (pp = (&proclist)->p_next; pp != PNULL; pp = pp->p_next)
1300 if (pp->p_pid > 0) {
1301 if (pp->p_flags & PFOREGND)
1302 (void) kill(pp->p_pid, SIGHUP);