fst 169 dev/systrace.c struct str_process *systrace_findpid(struct fsystrace *fst, pid_t pid); fst 209 dev/systrace.c struct fsystrace *fst = (struct fsystrace *)fp->f_data; fst 218 dev/systrace.c rw_enter_write(&fst->lock); fst 220 dev/systrace.c if ((process = TAILQ_FIRST(&fst->messages)) != NULL) { fst 224 dev/systrace.c TAILQ_REMOVE(&fst->messages, process, msg_next); fst 231 dev/systrace.c } else if (TAILQ_FIRST(&fst->processes) == NULL) { fst 238 dev/systrace.c rw_exit_write(&fst->lock); fst 239 dev/systrace.c error = tsleep(fst, PWAIT|PCATCH, "systrrd", 0); fst 247 dev/systrace.c rw_exit_write(&fst->lock); fst 276 dev/systrace.c struct fsystrace *fst = (struct fsystrace *)fp->f_data; fst 335 dev/systrace.c rw_enter_write(&fst->lock); fst 338 dev/systrace.c strp = systrace_findpid(fst, pid); fst 351 dev/systrace.c ret = systrace_attach(fst, pid); fst 374 dev/systrace.c ret = systrace_policy(fst, (struct systrace_policy *)data); fst 380 dev/systrace.c if (!fst->fd_pid) { fst 392 dev/systrace.c fdp->fd_cdir = fst->fd_cdir; fst 393 dev/systrace.c fdp->fd_rdir = fst->fd_rdir; fst 395 dev/systrace.c fst->fd_pid = 0; fst 396 dev/systrace.c fst->fd_cdir = fst->fd_rdir = NULL; fst 399 dev/systrace.c ret = systrace_getcwd(fst, strp); fst 407 dev/systrace.c rw_exit_write(&fst->lock); fst 418 dev/systrace.c struct fsystrace *fst = (struct fsystrace *)fp->f_data; fst 425 dev/systrace.c rw_enter_write(&fst->lock); fst 427 dev/systrace.c if (!TAILQ_EMPTY(&fst->messages)) fst 430 dev/systrace.c selrecord(p, &fst->si); fst 431 dev/systrace.c rw_exit_write(&fst->lock); fst 461 dev/systrace.c struct fsystrace *fst = (struct fsystrace *)fp->f_data; fst 466 dev/systrace.c rw_enter_write(&fst->lock); fst 470 dev/systrace.c for (strp = TAILQ_FIRST(&fst->processes); strp; fst 471 dev/systrace.c strp = TAILQ_FIRST(&fst->processes)) { fst 479 dev/systrace.c for (strp = TAILQ_FIRST(&fst->messages); strp; fst 480 dev/systrace.c strp = TAILQ_FIRST(&fst->messages)) { fst 481 dev/systrace.c TAILQ_REMOVE(&fst->messages, strp, msg_next); fst 486 dev/systrace.c for (strpol = TAILQ_FIRST(&fst->policies); strpol; fst 487 dev/systrace.c strpol = TAILQ_FIRST(&fst->policies)) fst 488 dev/systrace.c systrace_closepolicy(fst, strpol); fst 491 dev/systrace.c if (fst->fd_cdir) fst 492 dev/systrace.c vrele(fst->fd_cdir); fst 493 dev/systrace.c if (fst->fd_rdir) fst 494 dev/systrace.c vrele(fst->fd_rdir); fst 495 dev/systrace.c rw_exit_write(&fst->lock); fst 560 dev/systrace.c struct fsystrace *fst = NULL; fst 565 dev/systrace.c MALLOC(fst, struct fsystrace *, sizeof(struct fsystrace), fst 568 dev/systrace.c memset(fst, 0, sizeof(struct fsystrace)); fst 569 dev/systrace.c rw_init(&fst->lock, "systrace"); fst 570 dev/systrace.c TAILQ_INIT(&fst->processes); fst 571 dev/systrace.c TAILQ_INIT(&fst->messages); fst 572 dev/systrace.c TAILQ_INIT(&fst->policies); fst 575 dev/systrace.c fst->issuser = 1; fst 576 dev/systrace.c fst->p_ruid = p->p_cred->p_ruid; fst 577 dev/systrace.c fst->p_rgid = p->p_cred->p_rgid; fst 581 dev/systrace.c FREE(fst, M_XDATA); fst 587 dev/systrace.c f->f_data = (caddr_t) fst; fst 608 dev/systrace.c systrace_wakeup(struct fsystrace *fst) fst 610 dev/systrace.c wakeup((caddr_t)fst); fst 611 dev/systrace.c selwakeup(&fst->si); fst 635 dev/systrace.c struct fsystrace *fst; fst 640 dev/systrace.c fst = strp->parent; fst 641 dev/systrace.c rw_enter_write(&fst->lock); fst 645 dev/systrace.c systrace_msg_child(fst, strp, -1); fst 648 dev/systrace.c rw_exit_write(&fst->lock); fst 658 dev/systrace.c struct fsystrace *fst; fst 667 dev/systrace.c fst = oldstrp->parent; fst 668 dev/systrace.c rw_enter_write(&fst->lock); fst 671 dev/systrace.c if (systrace_insert_process(fst, p)) fst 673 dev/systrace.c if ((strp = systrace_findpid(fst, p->p_pid)) == NULL) fst 681 dev/systrace.c systrace_msg_child(fst, oldstrp, p->p_pid); fst 683 dev/systrace.c rw_exit_write(&fst->lock); fst 693 dev/systrace.c fst = strp->parent; \ fst 694 dev/systrace.c rw_enter_write(&fst->lock); \ fst 704 dev/systrace.c struct fsystrace *fst = NULL; fst 725 dev/systrace.c fst = strp->parent; fst 727 dev/systrace.c rw_enter_write(&fst->lock); fst 737 dev/systrace.c if (fst->issuser) { fst 742 dev/systrace.c maycontrol = fst->p_ruid == p->p_cred->p_ruid && fst 743 dev/systrace.c fst->p_rgid == p->p_cred->p_rgid; fst 771 dev/systrace.c rw_exit_write(&fst->lock); fst 786 dev/systrace.c error = systrace_msg_ask(fst, strp, code, callp->sy_argsize, v); fst 799 dev/systrace.c fst = strp->parent; fst 800 dev/systrace.c rw_enter_write(&fst->lock); fst 835 dev/systrace.c rw_exit_write(&fst->lock); fst 862 dev/systrace.c if ((fst = strp->parent) == NULL || !fst->issuser) { fst 877 dev/systrace.c fst = strp->parent; fst 878 dev/systrace.c rw_enter_write(&fst->lock); fst 884 dev/systrace.c systrace_closepolicy(fst, strp->policy); fst 887 dev/systrace.c systrace_msg_emul(fst, strp); fst 895 dev/systrace.c systrace_msg_ugid(fst, strp); fst 902 dev/systrace.c systrace_msg_result(fst, strp, error, code, fst 910 dev/systrace.c rw_exit_write(&fst->lock); fst 1063 dev/systrace.c systrace_policy(struct fsystrace *fst, struct systrace_policy *pol) fst 1074 dev/systrace.c strpol = systrace_newpolicy(fst, pol->strp_maxents); fst 1084 dev/systrace.c TAILQ_FOREACH(strpol, &fst->policies, next) fst 1090 dev/systrace.c strp = systrace_findpid(fst, pol->strp_pid); fst 1099 dev/systrace.c systrace_closepolicy(fst, strp->policy); fst 1103 dev/systrace.c TAILQ_REMOVE(&fst->policies, strpol, next); fst 1104 dev/systrace.c TAILQ_INSERT_TAIL(&fst->policies, strpol, next); fst 1117 dev/systrace.c TAILQ_FOREACH(strpol, &fst->policies, next) fst 1149 dev/systrace.c systrace_getcwd(struct fsystrace *fst, struct str_process *strp) fst 1166 dev/systrace.c fst->fd_pid = strp->pid; fst 1167 dev/systrace.c fst->fd_cdir = myfdp->fd_cdir; fst 1168 dev/systrace.c fst->fd_rdir = myfdp->fd_rdir; fst 1221 dev/systrace.c systrace_attach(struct fsystrace *fst, pid_t pid) fst 1289 dev/systrace.c error = systrace_insert_process(fst, proc); fst 1310 dev/systrace.c struct fsystrace *fst; fst 1322 dev/systrace.c fst = strp->parent; fst 1323 dev/systrace.c rw_enter_write(&fst->lock); fst 1331 dev/systrace.c if (fst->issuser || fst 1332 dev/systrace.c fst->p_ruid != p->p_cred->p_ruid || fst 1333 dev/systrace.c fst->p_rgid != p->p_cred->p_rgid) { fst 1334 dev/systrace.c rw_exit_write(&fst->lock); fst 1481 dev/systrace.c struct fsystrace *fst; fst 1486 dev/systrace.c fst = strp->parent; fst 1488 dev/systrace.c rw_enter_write(&fst->lock); fst 1491 dev/systrace.c if (!fst->issuser && (ISSET(p->p_flag, P_SUGID) || fst 1493 dev/systrace.c fst->p_ruid != p->p_cred->p_ruid || fst 1494 dev/systrace.c fst->p_rgid != p->p_cred->p_rgid)) { fst 1511 dev/systrace.c rw_exit_write(&fst->lock); fst 1520 dev/systrace.c struct fsystrace *fst; fst 1528 dev/systrace.c fst = strp->parent; fst 1529 dev/systrace.c rw_enter_write(&fst->lock); fst 1542 dev/systrace.c rw_exit_write(&fst->lock); fst 1555 dev/systrace.c systrace_findpid(struct fsystrace *fst, pid_t pid) fst 1560 dev/systrace.c TAILQ_FOREACH(strp, &fst->processes, next) fst 1576 dev/systrace.c struct fsystrace *fst = NULL; fst 1592 dev/systrace.c fst = strp->parent; fst 1593 dev/systrace.c systrace_wakeup(fst); fst 1596 dev/systrace.c TAILQ_REMOVE(&fst->messages, strp, msg_next); fst 1598 dev/systrace.c TAILQ_REMOVE(&fst->processes, strp, next); fst 1599 dev/systrace.c fst->nprocesses--; fst 1602 dev/systrace.c systrace_closepolicy(fst, strp->policy); fst 1610 dev/systrace.c systrace_closepolicy(struct fsystrace *fst, struct str_policy *policy) fst 1615 dev/systrace.c fst->npolicies--; fst 1620 dev/systrace.c TAILQ_REMOVE(&fst->policies, policy, next); fst 1627 dev/systrace.c systrace_insert_process(struct fsystrace *fst, struct proc *proc) fst 1638 dev/systrace.c strp->parent = fst; fst 1640 dev/systrace.c TAILQ_INSERT_TAIL(&fst->processes, strp, next); fst 1641 dev/systrace.c fst->nprocesses++; fst 1650 dev/systrace.c systrace_newpolicy(struct fsystrace *fst, int maxents) fst 1655 dev/systrace.c if (fst->npolicies > SYSTR_MAX_POLICIES && !fst->issuser) { fst 1659 dev/systrace.c TAILQ_FOREACH(tmp, &fst->policies, next) { fst 1668 dev/systrace.c systrace_msg_policyfree(fst, tmp); fst 1670 dev/systrace.c systrace_closepolicy(fst, tmp); fst 1688 dev/systrace.c fst->npolicies++; fst 1689 dev/systrace.c pol->nr = fst->npolicynr++; fst 1692 dev/systrace.c TAILQ_INSERT_TAIL(&fst->policies, pol, next); fst 1698 dev/systrace.c systrace_msg_ask(struct fsystrace *fst, struct str_process *strp, fst 1713 dev/systrace.c systrace_msg_result(struct fsystrace *fst, struct str_process *strp, fst 1732 dev/systrace.c systrace_msg_emul(struct fsystrace *fst, struct str_process *strp) fst 1743 dev/systrace.c systrace_msg_ugid(struct fsystrace *fst, struct str_process *strp) fst 1758 dev/systrace.c struct fsystrace *fst = strp->parent; fst 1777 dev/systrace.c TAILQ_INSERT_TAIL(&fst->messages, strp, msg_next); fst 1781 dev/systrace.c systrace_wakeup(fst); fst 1784 dev/systrace.c rw_exit_write(&fst->lock); fst 1801 dev/systrace.c systrace_msg_child(struct fsystrace *fst, struct str_process *strp, pid_t npid) fst 1824 dev/systrace.c TAILQ_INSERT_TAIL(&fst->messages, nstrp, msg_next); fst 1826 dev/systrace.c systrace_wakeup(fst); fst 1832 dev/systrace.c systrace_msg_policyfree(struct fsystrace *fst, struct str_policy *strpol) fst 1847 dev/systrace.c TAILQ_INSERT_TAIL(&fst->messages, nstrp, msg_next); fst 1849 dev/systrace.c systrace_wakeup(fst); fst 98 kern/kern_timeout.c #define CIRCQ_APPEND(fst, snd) do { \ fst 100 kern/kern_timeout.c (fst)->prev->next = (snd)->next;\ fst 101 kern/kern_timeout.c (snd)->next->prev = (fst)->prev;\ fst 102 kern/kern_timeout.c (snd)->prev->next = (fst); \ fst 103 kern/kern_timeout.c (fst)->prev = (snd)->prev; \