Lines Matching full:proc
46 #include <sys/proc.h>
89 pfs_visible_proc(struct thread *td, struct pfs_node *pn, struct proc *proc) in pfs_visible_proc() argument
92 if (proc == NULL) in pfs_visible_proc()
95 PROC_LOCK_ASSERT(proc, MA_OWNED); in pfs_visible_proc()
97 if ((proc->p_flag & P_WEXIT) != 0) in pfs_visible_proc()
99 if (p_cansee(td, proc) != 0) in pfs_visible_proc()
101 return (pn_vis(td, proc, pn)); in pfs_visible_proc()
106 struct proc **p) in pfs_visible()
108 struct proc *proc; in pfs_visible() local
117 proc = pfind(pid); in pfs_visible()
118 if (proc == NULL) in pfs_visible()
120 if (pfs_visible_proc(td, pn, proc)) { in pfs_visible()
122 *p = proc; in pfs_visible()
124 PROC_UNLOCK(proc); in pfs_visible()
127 PROC_UNLOCK(proc); in pfs_visible()
132 pfs_lookup_proc(pid_t pid, struct proc **p) in pfs_lookup_proc()
134 struct proc *proc; in pfs_lookup_proc() local
136 proc = pfind(pid); in pfs_lookup_proc()
137 if (proc == NULL) in pfs_lookup_proc()
139 if ((proc->p_flag & P_WEXIT) != 0) { in pfs_lookup_proc()
140 PROC_UNLOCK(proc); in pfs_lookup_proc()
143 _PHOLD(proc); in pfs_lookup_proc()
144 PROC_UNLOCK(proc); in pfs_lookup_proc()
145 *p = proc; in pfs_lookup_proc()
180 struct proc *proc; in pfs_close() local
194 proc = pfind(pvd->pvd_pid); in pfs_close()
196 proc = NULL; in pfs_close()
199 error = pn_close(va->a_td, proc, pn); in pfs_close()
201 if (proc != NULL) in pfs_close()
202 PROC_UNLOCK(proc); in pfs_close()
217 struct proc *proc; in pfs_getattr() local
223 if (!pfs_visible(curthread, pn, pvd->pvd_pid, &proc)) in pfs_getattr()
258 if (proc != NULL) { in pfs_getattr()
259 vap->va_uid = proc->p_ucred->cr_ruid; in pfs_getattr()
260 vap->va_gid = proc->p_ucred->cr_rgid; in pfs_getattr()
267 error = pn_attr(curthread, proc, pn, vap); in pfs_getattr()
269 if(proc != NULL) in pfs_getattr()
270 PROC_UNLOCK(proc); in pfs_getattr()
284 struct proc *proc; in pfs_ioctl() local
314 if (!pfs_visible(curthread, pn, pvd->pvd_pid, &proc)) { in pfs_ioctl()
319 error = pn_ioctl(curthread, proc, pn, va->a_command, va->a_data); in pfs_ioctl()
321 if (proc != NULL) in pfs_ioctl()
322 PROC_UNLOCK(proc); in pfs_ioctl()
337 struct proc *proc; in pfs_getextattr() local
347 if (!pfs_visible(curthread, pn, pvd->pvd_pid, &proc)) in pfs_getextattr()
353 error = pn_getextattr(curthread, proc, pn, in pfs_getextattr()
357 if (proc != NULL) in pfs_getextattr()
358 PROC_UNLOCK(proc); in pfs_getextattr()
674 struct proc *proc; in pfs_read() local
697 if (!pfs_visible(curthread, pn, pvd->pvd_pid, &proc)) in pfs_read()
699 if (proc != NULL) { in pfs_read()
700 _PHOLD(proc); in pfs_read()
701 PROC_UNLOCK(proc); in pfs_read()
710 error = pn_fill(curthread, proc, pn, NULL, uio); in pfs_read()
744 error = pn_fill(curthread, proc, pn, sb, uio); in pfs_read()
777 if (proc != NULL) in pfs_read()
778 PRELE(proc); in pfs_read()
786 pfs_iterate(struct thread *td, struct proc *proc, struct pfs_node *pd, in pfs_iterate() argument
787 struct pfs_node **pn, struct proc **p) in pfs_iterate()
820 } else if (proc != NULL) { in pfs_iterate()
821 visible = pfs_visible_proc(td, *pn, proc); in pfs_iterate()
848 struct proc *p, *proc; in pfs_readdir() local
877 proc = NULL; in pfs_readdir()
878 if (pid != NO_PID && !pfs_lookup_proc(pid, &proc)) in pfs_readdir()
884 KASSERT(pid == NO_PID || proc != NULL, in pfs_readdir()
888 PROC_LOCK(proc); in pfs_readdir()
891 if (!pfs_visible_proc(curthread, pd, proc)) { in pfs_readdir()
892 _PRELE(proc); in pfs_readdir()
893 PROC_UNLOCK(proc); in pfs_readdir()
902 if (pfs_iterate(curthread, proc, pd, &pn, &p) == -1) { in pfs_readdir()
904 if (proc != NULL) { in pfs_readdir()
905 _PRELE(proc); in pfs_readdir()
906 PROC_UNLOCK(proc); in pfs_readdir()
915 while (pfs_iterate(curthread, proc, pd, &pn, &p) != -1 && in pfs_readdir()
958 if (proc != NULL) { in pfs_readdir()
959 _PRELE(proc); in pfs_readdir()
960 PROC_UNLOCK(proc); in pfs_readdir()
985 struct proc *proc = NULL; in pfs_readlink() local
1001 if ((proc = pfind(pvd->pvd_pid)) == NULL) in pfs_readlink()
1003 if (proc->p_flag & P_WEXIT) { in pfs_readlink()
1004 PROC_UNLOCK(proc); in pfs_readlink()
1007 _PHOLD(proc); in pfs_readlink()
1008 PROC_UNLOCK(proc); in pfs_readlink()
1017 error = pn_fill(curthread, proc, pn, &sb, NULL); in pfs_readlink()
1019 if (proc != NULL) in pfs_readlink()
1020 PRELE(proc); in pfs_readlink()
1082 struct proc *proc; in pfs_write() local
1106 if (!pfs_visible(curthread, pn, pvd->pvd_pid, &proc)) in pfs_write()
1108 if (proc != NULL) { in pfs_write()
1109 _PHOLD(proc); in pfs_write()
1110 PROC_UNLOCK(proc); in pfs_write()
1114 error = pn_fill(curthread, proc, pn, NULL, uio); in pfs_write()
1115 if (proc != NULL) in pfs_write()
1116 PRELE(proc); in pfs_write()
1122 if (proc != NULL) in pfs_write()
1123 PRELE(proc); in pfs_write()
1127 error = pn_fill(curthread, proc, pn, &sb, uio); in pfs_write()
1130 if (proc != NULL) in pfs_write()
1131 PRELE(proc); in pfs_write()