Lines Matching +full:protect +full:- +full:exec

57  * The user can trace individual threads by using the 'pid/1,3-6,8-' syntax.
108 /* fetch or allocate thread-private data */
120 pri->sys_path = my_malloc(pri->sys_psize = 16, NULL); in get_private()
121 pri->sys_string = my_malloc(pri->sys_ssize = 32, NULL); in get_private()
128 /* destructor function for thread-private data */
134 if (pri->sys_path) in free_private()
135 free(pri->sys_path); in free_private()
136 if (pri->sys_string) in free_private()
137 free(pri->sys_string); in free_private()
138 if (pri->exec_string) in free_private()
139 free(pri->exec_string); in free_private()
140 if (pri->str_buffer) in free_private()
141 free(pri->str_buffer); in free_private()
220 command, who, (int)Pstatus(Proc)->pr_pid, in grab_lwp()
239 if (lwptrace(Pstatus(Proc)->pr_pid, Lsp->pr_lwpid)) in create_thread()
242 if ((new_Lwp = grab_lwp(Lsp->pr_lwpid)) != NULL) { in create_thread()
257 int ofd = -1; in main()
283 /* this should be per-traced-process */ in main()
431 /* if -a or -e was specified, force tracing of exec() */ in main()
443 argc -= optind; in main()
449 "memory for process-ids"); in main()
450 while (argc-- > 0) in main()
456 "usage:\t%s [-fcaeildDEF] [-[tTvx] [!]syscalls] [-[sS] [!]signals]\\\n", in main()
459 "\t[-[mM] [!]faults] [-[rw] [!]fds] [-[uU] [!]libs:[:][!]funcs]\\\n"); in main()
461 "\t[-o outfile] command | -p pid[/lwps] ...\n"); in main()
474 "%s: cannot trace set-id or " in main()
508 Lsp = &Psp->pr_lwp; in main()
509 pri->lwpstat = Lsp; in main()
510 data_model = Psp->pr_dmodel; in main()
511 created = Psp->pr_pid; in main()
514 pri->length = 0; in main()
516 pri->exec_string = my_realloc(pri->exec_string, in main()
517 strlen(pri->sys_string) + 1, NULL); in main()
518 (void) strcpy(pri->exec_pname, pri->pname); in main()
519 (void) strcpy(pri->exec_string, pri->sys_string); in main()
520 pri->length += strlen(pri->sys_string); in main()
521 pri->exec_lwpid = pri->lwpstat->pr_lwpid; in main()
522 pri->sys_leng = 0; in main()
523 *pri->sys_string = '\0'; in main()
525 pri->syslast = Psp->pr_stime; in main()
526 pri->usrlast = Psp->pr_utime; in main()
546 (void) enable_extended_FILE_stdio(-1, -1); in main()
583 -1, (off_t)0); in main()
587 (void) mutex_init(&gps->ps_mutex0, i, NULL); in main()
588 (void) mutex_init(&gps->ps_mutex1, i, NULL); in main()
589 (void) mutex_init(&gps->fork_lock, i, NULL); in main()
590 (void) cond_init(&gps->fork_cv, i, NULL); in main()
597 if (sfd == -1) in main()
599 if (unlink(tmps) == -1) in main()
616 Lsp = &Psp->pr_lwp; in main()
629 case -1: in main()
632 command, (int)set->pid); in main()
644 Lsp = &Psp->pr_lwp; in main()
657 * If running setuid-root, become root for real to avoid in main()
658 * affecting the per-user limitation on the maximum number in main()
659 * of processes (one benefit of running setuid-root). in main()
715 /* special case -- cannot trace sysexit because context is changed */ in main()
722 /* special case -- trace exec() on entry to get the args */ in main()
725 /* special case -- sysexit never reached */ in main()
747 * A process stopped on exec() gets its breakpoints set below. in main()
749 if ((Lsp->pr_why != PR_SYSENTRY && in main()
750 Lsp->pr_why != PR_SYSEXIT) || in main()
751 Lsp->pr_what != SYS_execve) { in main()
758 * Use asynchronous-stop for multithreaded truss. in main()
771 * We leave a created process stopped so its exec() can be reported. in main()
775 ((Pstate(Proc) == PS_STOP && Lsp->pr_why == PR_REQUESTED) || in main()
776 (Lsp->pr_flags & PR_DSTOP))) in main()
807 Pstatus(Proc)->pr_lwp.pr_lwpid : 0; in main_thread()
858 report(pri, times(&tms) - starttime); in main_thread()
874 lwpid_t who = Lsp->pr_lwpid; in worker_thread()
888 int dotrace = lwptrace(Psp->pr_pid, Lsp->pr_lwpid); in worker_thread()
890 pri->Lwp = Lwp; in worker_thread()
891 pri->lwpstat = Lsp; in worker_thread()
892 pri->syslast = Lsp->pr_stime; in worker_thread()
893 pri->usrlast = Lsp->pr_utime; in worker_thread()
924 (Lsp->pr_flags & (PR_STOPPED|PR_ISTOP)) in worker_thread()
932 if ((Lsp->pr_flags & PR_STOPPED) && in worker_thread()
933 Lsp->pr_why == PR_JOBCONTROL) in worker_thread()
942 data_model = Psp->pr_dmodel; in worker_thread()
947 * After exec(), only one LWP remains in the process. in worker_thread()
949 * EAGAIN (PS_LOST) if the program being exec()ed in worker_thread()
950 * is a set-id program. Every other controlling in worker_thread()
952 * We are the controlling thread for the exec()ing LWP. in worker_thread()
961 * We have to free and re-grab the LWP. in worker_thread()
963 * from exec() or execve() and have only in worker_thread()
970 pri->Lwp = Lwp = in worker_thread()
975 pri->lwpstat = Lsp = Lstatus(Lwp); in worker_thread()
981 if (pri->exec_string && *pri->exec_string) { in worker_thread()
982 if (pri->exec_pname[0] != '\0') in worker_thread()
983 (void) fputs(pri->exec_pname, stdout); in worker_thread()
985 (void) fputs(pri->exec_string, stdout); in worker_thread()
987 } else if (pri->length) { in worker_thread()
990 if (pri->sys_valid) in worker_thread()
992 "%s\t*** cannot trace across exec() of %s ***\n", in worker_thread()
993 pri->pname, pri->sys_path); in worker_thread()
997 pri->pname); in worker_thread()
998 pri->length = 0; in worker_thread()
1006 abend(pri->pname, "uncaught status of subject lwp"); in worker_thread()
1013 what = Lsp->pr_what; in worker_thread()
1016 switch (Lsp->pr_why) { in worker_thread()
1043 /* protect ourself from operating system error */ in worker_thread()
1046 pri->length = 0; in worker_thread()
1068 scp = Cp->syscount[ow_syscall]; in worker_thread()
1069 if (ow_subcode != -1) in worker_thread()
1071 scp->count++; in worker_thread()
1072 accumulate(&scp->stime, in worker_thread()
1073 &Lsp->pr_stime, &pri->syslast); in worker_thread()
1074 accumulate(&Cp->usrtotal, in worker_thread()
1075 &Lsp->pr_utime, &pri->usrlast); in worker_thread()
1076 pri->syslast = Lsp->pr_stime; in worker_thread()
1077 pri->usrlast = Lsp->pr_utime; in worker_thread()
1085 pri->syslast = Lsp->pr_stime; in worker_thread()
1104 pri->syslast = Lsp->pr_stime; in worker_thread()
1106 (Pstatus(Proc))->pr_sysentry; in worker_thread()
1113 strlen(pri->sys_string) + 1, NULL); in worker_thread()
1115 pri->sys_string); in worker_thread()
1117 (Pstatus(Proc))->pr_sysentry; in worker_thread()
1119 pri->syslast = Lsp->pr_stime; in worker_thread()
1125 pri->length += in worker_thread()
1126 printf("%s\n", pri->sys_string); in worker_thread()
1129 pri->sys_leng = 0; in worker_thread()
1130 *pri->sys_string = '\0'; in worker_thread()
1140 pri->exec_string = in worker_thread()
1141 my_realloc(pri->exec_string, in worker_thread()
1142 strlen(pri->sys_string) + 1, in worker_thread()
1144 (void) strcpy(pri->exec_pname, in worker_thread()
1145 pri->pname); in worker_thread()
1146 (void) strcpy(pri->exec_string, in worker_thread()
1147 pri->sys_string); in worker_thread()
1148 pri->length += strlen(pri->sys_string); in worker_thread()
1149 pri->exec_lwpid = Lsp->pr_lwpid; in worker_thread()
1151 pri->sys_leng = 0; in worker_thread()
1152 *pri->sys_string = '\0'; in worker_thread()
1157 pri->syslast = Lsp->pr_stime; in worker_thread()
1173 pri->Errno = Lsp->pr_errno; in worker_thread()
1174 pri->ErrPriv = Lsp->pr_errpriv; in worker_thread()
1178 pri->sys_nargs > 2 && in worker_thread()
1179 (pri->sys_args[2]&0x3) == O_RDONLY) || in worker_thread()
1182 pri->sys_nargs > 1 && in worker_thread()
1183 (pri->sys_args[1]&0x3) == O_RDONLY); in worker_thread()
1184 if ((pri->Errno == 0 || pri->Errno == EBUSY) && in worker_thread()
1185 pri->sys_valid && !readonly) { in worker_thread()
1190 * and no -F flag was specified. in worker_thread()
1199 pri->sys_string); in worker_thread()
1213 pri->sys_leng = 0; in worker_thread()
1214 *pri->sys_string = '\0'; in worker_thread()
1215 pri->sys_nargs = 0; in worker_thread()
1220 if (what == SYS_execve && Lsp->pr_errno == 0) { in worker_thread()
1222 * Refresh the data model on exec() in case it in worker_thread()
1224 * doesn't update process-wide status, so we in worker_thread()
1229 data_model = Psp->pr_dmodel; in worker_thread()
1233 if (what == SYS_lwp_create && pri->Rval1 != 0) { in worker_thread()
1237 if ((new_Lwp = grab_lwp(pri->Rval1)) != NULL) { in worker_thread()
1251 pri->sys_nargs = 0; in worker_thread()
1255 if (what == SYS_execve && pri->Errno == 0) { in worker_thread()
1259 * exec() resets the calling LWP's lwpid to 1. in worker_thread()
1261 * we have to free and re-grab the LWP in worker_thread()
1265 if (who != Lsp->pr_lwpid) { in worker_thread()
1273 who = Lsp->pr_lwpid; in worker_thread()
1275 pri->Lwp = Lwp = in worker_thread()
1280 pri->lwpstat = Lsp = Lstatus(Lwp); in worker_thread()
1288 Lsp->pr_why, what); in worker_thread()
1292 if (pri->child) { /* controlled process fork()ed */ in worker_thread()
1294 if (Lsp->pr_why == PR_SYSEXIT && in worker_thread()
1295 (Lsp->pr_what == SYS_vfork || in worker_thread()
1296 (Lsp->pr_what == SYS_forksys && in worker_thread()
1297 Lsp->pr_sysarg[0] == 2))) { in worker_thread()
1301 if (control(pri, pri->child)) { in worker_thread()
1303 pri->child = 0; in worker_thread()
1328 pri->child = 0; in worker_thread()
1355 Lsp->pr_why == PR_FAULTED && in worker_thread()
1356 Lsp->pr_what == FLTTRACE) { in worker_thread()
1362 pri->pname); in worker_thread()
1379 if (Lsp->pr_why == PR_REQUESTED) { in worker_thread()
1409 Lsp->pr_why == PR_FAULTED && in worker_thread()
1410 Lsp->pr_what == FLTBPT) in worker_thread()
1417 scp = Cp->syscount[ow_syscall]; in worker_thread()
1418 if (ow_subcode != -1) in worker_thread()
1420 scp->count++; in worker_thread()
1421 accumulate(&scp->stime, in worker_thread()
1422 &Lsp->pr_stime, &pri->syslast); in worker_thread()
1423 accumulate(&Cp->usrtotal, in worker_thread()
1424 &Lsp->pr_utime, &pri->usrlast); in worker_thread()
1425 pri->syslast = Lsp->pr_stime; in worker_thread()
1426 pri->usrlast = Lsp->pr_utime; in worker_thread()
1434 pri->syslast = Lsp->pr_stime; in worker_thread()
1455 if (--truss_nlwp != 0) { in worker_thread()
1484 * application threads to stop -- they're not necessarily in worker_thread()
1547 Cp->basetime = Psp->pr_lwp.pr_tstamp; in setup_basetime()
1554 hrtime_t delta = basehrtime - in setup_basetime()
1555 ((hrtime_t)Cp->basetime.tv_sec * NANOSEC + in setup_basetime()
1556 Cp->basetime.tv_nsec); in setup_basetime()
1559 basedate->tv_sec -= (time_t)(delta / NANOSEC); in setup_basetime()
1560 basedate->tv_usec -= (delta % NANOSEC) / 1000; in setup_basetime()
1561 if (basedate->tv_usec < 0) { in setup_basetime()
1562 basedate->tv_sec--; in setup_basetime()
1563 basedate->tv_usec += MICROSEC; in setup_basetime()
1566 ptm = localtime(&basedate->tv_sec); in setup_basetime()
1568 if ((pdst = tzname[ptm->tm_isdst ? 1 : 0]) == NULL) in setup_basetime()
1573 basedate->tv_sec, basedate->tv_usec / 100, in setup_basetime()
1581 * Performs per-process initializations. If truss is following a victim
1583 * created. Here is where each new truss process gets its per-process data
1608 c_basetime = Cp->basetime; in per_proc_init()
1613 Cp->basetime = c_basetime; in per_proc_init()
1622 Cp->syscount[i] = scp; in per_proc_init()
1660 fentry.count = ntry->count; in child_to_file()
1661 s = ntry->key; in child_to_file()
1662 t = ntry->lib; in child_to_file()
1676 if (write(sfd, buf, sizeof (fentry) + i + j) == -1) in child_to_file()
1689 fentry.sz_key = bufsz - sizeof (fentry); in child_to_file()
1693 bufsz - sizeof (fentry)); in child_to_file()
1694 if (write(sfd, buf, bufsz) == -1) in child_to_file()
1724 if (fstat(sfd, &fsi) == -1) in file_to_parent()
1725 abend("Error stat-ing tempfile", NULL); in file_to_parent()
1790 Cp->usrtotal.tv_sec += ncp->usrtotal.tv_sec; in file_to_parent()
1791 Cp->usrtotal.tv_nsec += ncp->usrtotal.tv_nsec; in file_to_parent()
1792 if (Cp->usrtotal.tv_nsec >= NANOSEC) { in file_to_parent()
1793 Cp->usrtotal.tv_nsec -= NANOSEC; in file_to_parent()
1794 Cp->usrtotal.tv_sec++; in file_to_parent()
1797 ncp->syscount[i] = sscp; in file_to_parent()
1802 Cp->fltcount[i] += ncp->fltcount[i]; in file_to_parent()
1806 Cp->sigcount[i] += ncp->sigcount[i]; in file_to_parent()
1810 struct syscount *scp = Cp->syscount[i]; in file_to_parent()
1811 struct syscount *nscp = ncp->syscount[i]; in file_to_parent()
1817 scp->count += nscp->count; in file_to_parent()
1818 scp->error += nscp->error; in file_to_parent()
1819 scp->stime.tv_sec += nscp->stime.tv_sec; in file_to_parent()
1820 scp->stime.tv_nsec += in file_to_parent()
1821 nscp->stime.tv_nsec; in file_to_parent()
1822 if (scp->stime.tv_nsec >= NANOSEC) { in file_to_parent()
1823 scp->stime.tv_nsec -= NANOSEC; in file_to_parent()
1824 scp->stime.tv_sec++; in file_to_parent()
1839 if (fstat(sfd, &fsi) == -1) in file_to_parent()
1840 abend("Error stat-ing tempfile", NULL); in file_to_parent()
1855 pid_t pid = Pstatus(Proc)->pr_pid; in make_pname()
1856 id_t lwpid = pri->lwpstat->pr_lwpid; in make_pname()
1858 if (ff != pri->pparam.ff || in make_pname()
1859 lf != pri->pparam.lf || in make_pname()
1860 pid != pri->pparam.pid || in make_pname()
1861 lwpid != pri->pparam.lwpid || in make_pname()
1862 tid != pri->pparam.tid) { in make_pname()
1863 char *s = pri->pname; in make_pname()
1873 if (ff && lf && s < pri->pname + 9) in make_pname()
1876 pri->pparam.ff = ff; in make_pname()
1877 pri->pparam.lf = lf; in make_pname()
1878 pri->pparam.pid = pid; in make_pname()
1879 pri->pparam.lwpid = lwpid; in make_pname()
1880 pri->pparam.tid = tid; in make_pname()
1886 * Print the pri->pname[] string, if any.
1891 if (pri->pname[0]) in putpname()
1892 (void) fputs(pri->pname, stdout); in putpname()
1896 * Print the timestamp, if requested (-d, -D, or -E).
1901 const lwpstatus_t *Lsp = pri->lwpstat; in timestamp()
1905 if (!(dflag|Dflag|Eflag) || !(Lsp->pr_flags & PR_STOPPED)) in timestamp()
1908 seconds = Lsp->pr_tstamp.tv_sec - Cp->basetime.tv_sec; in timestamp()
1909 fraction = Lsp->pr_tstamp.tv_nsec - Cp->basetime.tv_nsec; in timestamp()
1911 seconds--; in timestamp()
1918 fraction -= (MILLISEC * 10); in timestamp()
1925 int oseconds = pri->seconds; in timestamp()
1926 int ofraction = pri->fraction; in timestamp()
1928 pri->seconds = seconds; in timestamp()
1929 pri->fraction = fraction; in timestamp()
1930 seconds -= oseconds; in timestamp()
1931 fraction -= ofraction; in timestamp()
1933 seconds--; in timestamp()
1940 seconds = Lsp->pr_stime.tv_sec - pri->syslast.tv_sec; in timestamp()
1941 fraction = Lsp->pr_stime.tv_nsec - pri->syslast.tv_nsec; in timestamp()
1944 seconds--; in timestamp()
1951 fraction -= (MILLISEC * 10); in timestamp()
1967 if (Euid == Ruid && Egid == Rgid) /* not set-id */ in xcreat()
1993 fd = -1; in xcreat()
2000 fd = -1; in xcreat()
2015 * Mark it close-on-exec so created processes don't inherit it. in xcreat()
2042 * Accumulate time differencies: a += e - s;
2047 ap->tv_sec += ep->tv_sec - sp->tv_sec; in accumulate()
2048 ap->tv_nsec += ep->tv_nsec - sp->tv_nsec; in accumulate()
2049 if (ap->tv_nsec >= NANOSEC) { in accumulate()
2050 ap->tv_nsec -= NANOSEC; in accumulate()
2051 ap->tv_sec++; in accumulate()
2052 } else if (ap->tv_nsec < 0) { in accumulate()
2053 ap->tv_nsec += NANOSEC; in accumulate()
2054 ap->tv_sec--; in accumulate()
2068 char *p = t1->lib; in lib_sort()
2069 char *q = t2->lib; in lib_sort()
2072 i = t1->count; in lib_sort()
2073 j = t2->count; in lib_sort()
2075 return (-1); in lib_sort()
2079 p = t1->key; in lib_sort()
2080 q = t2->key; in lib_sort()
2104 if ((count = Cp->fltcount[i]) != 0) { in report()
2106 (void) printf("faults -------------\n"); in report()
2108 name = proc_fltname(i, pri->flt_name, in report()
2109 sizeof (pri->flt_name)); in report()
2122 if ((count = Cp->sigcount[i]) != 0) { in report()
2124 (void) printf("signals ------------\n"); in report()
2143 stbl[i].prev = tmp->prev; in report()
2144 stbl[i].next = tmp->next; in report()
2145 stbl[i].lib = tmp->lib; in report()
2146 stbl[i].key = tmp->key; in report()
2147 stbl[i].count = tmp->count; in report()
2154 "\n%-20s %-40s %s\n", "Library:", "Function", "calls"); in report()
2156 (void) printf("%-20s %-40s %ld\n", stbl[i].lib, in report()
2172 struct syscount *scp = Cp->syscount[i]; in report()
2177 if ((count = scp->count) != 0 || scp->error) { in report()
2178 (void) printf("%-19.19s ", in report()
2181 ticks = scp->stime; in report()
2186 if ((error = scp->error) != 0) in report()
2197 " -------- ------ ----\n"); in report()
2205 prtim(&Cp->usrtotal); in report()
2225 if ((sec = tp->tv_sec) != 0) /* whole seconds */ in prtim()
2230 (void) printf(".%3.3ld", tp->tv_nsec/1000000); /* fraction */ in prtim()
2240 pid_t pid = -1; in pids()
2259 (void) fprintf(stderr, "%s: duplicate process-id ignored: %d\n", in pids()
2270 pid_t pid = Pstatus(Proc)->pr_pid; in psargs()
2275 pri->pname, psinfo.pr_psargs); in psargs()
2279 pri->pname, (int)pid); in psargs()
2291 if (pri->str_bsize == 0) /* initial allocation of string buffer */ in fetchstring()
2292 pri->str_buffer = in fetchstring()
2293 my_malloc(pri->str_bsize = 16, "string buffer"); in fetchstring()
2294 *pri->str_buffer = '\0'; in fetchstring()
2298 return (leng? pri->str_buffer : NULL); in fetchstring()
2301 while (leng + nbyte >= pri->str_bsize) in fetchstring()
2302 pri->str_buffer = in fetchstring()
2303 my_realloc(pri->str_buffer, in fetchstring()
2304 pri->str_bsize *= 2, "string buffer"); in fetchstring()
2305 (void) strcpy(pri->str_buffer+leng, string); in fetchstring()
2312 pri->str_buffer[leng] = '\0'; in fetchstring()
2314 return (pri->str_buffer); in fetchstring()
2321 &p->pr_sets[priv_getsetbyname(set) * p->pr_setsize]); in getset()
2330 if (proc_get_cred(Pstatus(Proc)->pr_pid, &cred, 0) < 0) { in show_cred()
2331 perror("show_cred() - credential"); in show_cred()
2332 (void) printf("%s\t*** Cannot get credentials\n", pri->pname); in show_cred()
2335 if ((privs = proc_get_priv(Pstatus(Proc)->pr_pid)) == NULL) { in show_cred()
2336 perror("show_cred() - privileges"); in show_cred()
2337 (void) printf("%s\t*** Cannot get privileges\n", pri->pname); in show_cred()
2349 pri->pname, in show_cred()
2358 pri->pname, in show_cred()
2373 pri->pname, in show_cred()
2400 (void) mutex_lock(&gps->fork_lock); in control()
2401 while (gps->fork_pid != 0) in control()
2402 (void) cond_wait(&gps->fork_cv, &gps->fork_lock); in control()
2403 gps->fork_pid = getpid(); /* parent pid */ in control()
2404 if ((childpid = fork()) == -1) { in control()
2406 pri->pname, (int)pid); in control()
2408 gps->fork_pid = 0; in control()
2409 (void) cond_broadcast(&gps->fork_cv); in control()
2410 (void) mutex_unlock(&gps->fork_lock); in control()
2420 while (gps->fork_pid != childpid) in control()
2421 (void) cond_wait(&gps->fork_cv, &gps->fork_lock); in control()
2422 gps->fork_pid = 0; in control()
2423 (void) cond_broadcast(&gps->fork_cv); in control()
2424 (void) mutex_unlock(&gps->fork_lock); in control()
2434 * The parent process owns the shared gps->fork_lock. in control()
2437 (void) mutex_lock(&gps->fork_lock); in control()
2446 gps->fork_pid = childpid; in control()
2447 (void) cond_broadcast(&gps->fork_cv); in control()
2448 (void) mutex_unlock(&gps->fork_lock); in control()
2458 gps->fork_pid = childpid; in control()
2459 (void) cond_broadcast(&gps->fork_cv); in control()
2460 (void) mutex_unlock(&gps->fork_lock); in control()
2471 Lsp = &Psp->pr_lwp; in control()
2472 pri->lwpstat = Lsp; in control()
2473 data_model = Psp->pr_dmodel; in control()
2477 pri->syslast = Psp->pr_stime; in control()
2478 pri->usrlast = Psp->pr_utime; in control()
2499 * Don't force the takeover unless the -F option was specified. in grabit()
2501 if ((Proc = Pgrab(set->pid, Fflag, &gcode)) == NULL) { in grabit()
2503 command, Pgrab_error(gcode), (int)set->pid); in grabit()
2504 pri->lwpstat = NULL; in grabit()
2508 Lsp = &Psp->pr_lwp; in grabit()
2509 pri->lwpstat = Lsp; in grabit()
2513 data_model = Psp->pr_dmodel; in grabit()
2514 pri->syslast = Psp->pr_stime; in grabit()
2515 pri->usrlast = Psp->pr_utime; in grabit()
2521 procadd(set->pid, set->lwps); in grabit()
2550 pri->pname, (int)pid); in release()
2553 if (fd >= 0) /* run-on-last-close sets the process running */ in release()
2576 (Lwp = pri->Lwp) != NULL) in intr()
2668 while ((pid = wait(&status)) != -1) { in wait4all()
2691 pri->pname); in letgo()
2706 } while (--n); in is_empty()
2722 } while (--n); in or_set()