Lines Matching refs:pr
44 struct pr *
51 struct pr *pr; in start_pr() local
53 pr = xcalloc(1, sizeof(*pr)); in start_pr()
79 pr->ostdout = dup(STDOUT_FILENO); in start_pr()
86 pr->kq = kqueue(); in start_pr()
87 if (pr->kq == -1) in start_pr()
89 pr->e = xmalloc(sizeof(struct kevent)); in start_pr()
90 EV_SET(pr->e, pr_pd, EVFILT_PROCDESC, EV_ADD, NOTE_EXIT, 0, in start_pr()
92 if (kevent(pr->kq, pr->e, 1, NULL, 0, NULL) == -1) in start_pr()
95 return (pr); in start_pr()
100 stop_pr(struct pr *pr) in stop_pr() argument
104 if (pr == NULL) in stop_pr()
108 if (pr->ostdout != STDOUT_FILENO) { in stop_pr()
110 dup2(pr->ostdout, STDOUT_FILENO); in stop_pr()
111 close(pr->ostdout); in stop_pr()
113 if (kevent(pr->kq, NULL, 0, pr->e, 1, NULL) == -1) in stop_pr()
115 wstatus = pr->e[0].data; in stop_pr()
116 close(pr->kq); in stop_pr()
117 free(pr); in stop_pr()