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; \