summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/fs/pseudofs/pseudofs_vnops.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/fs/pseudofs/pseudofs_vnops.c')
-rw-r--r--freebsd/sys/fs/pseudofs/pseudofs_vnops.c24
1 files changed, 23 insertions, 1 deletions
diff --git a/freebsd/sys/fs/pseudofs/pseudofs_vnops.c b/freebsd/sys/fs/pseudofs/pseudofs_vnops.c
index da35f062..3953430a 100644
--- a/freebsd/sys/fs/pseudofs/pseudofs_vnops.c
+++ b/freebsd/sys/fs/pseudofs/pseudofs_vnops.c
@@ -1,3 +1,5 @@
+#include <machine/rtems-bsd-kernel-space.h>
+
/*-
* SPDX-License-Identifier: BSD-3-Clause
*
@@ -31,7 +33,7 @@
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
-#include "opt_pseudofs.h"
+#include <rtems/bsd/local/opt_pseudofs.h>
#include <sys/param.h>
#include <sys/kernel.h>
@@ -95,6 +97,7 @@ pfs_visible_proc(struct thread *td, struct pfs_node *pn, struct proc *proc)
PROC_LOCK_ASSERT(proc, MA_OWNED);
+#ifndef __rtems__
visible = ((proc->p_flag & P_WEXIT) == 0);
if (visible)
visible = (p_cansee(td, proc) == 0);
@@ -102,6 +105,7 @@ pfs_visible_proc(struct thread *td, struct pfs_node *pn, struct proc *proc)
visible = pn_vis(td, proc, pn);
if (!visible)
return (0);
+#endif /* __rtems__ */
return (1);
}
@@ -118,7 +122,11 @@ pfs_visible(struct thread *td, struct pfs_node *pn, pid_t pid,
*p = NULL;
if (pid == NO_PID)
PFS_RETURN (1);
+#ifndef __rtems__
proc = allproc_locked ? pfind_locked(pid) : pfind(pid);
+#else /* __rtems__ */
+ proc = &proc0;
+#endif /* __rtems__ */
if (proc == NULL)
PFS_RETURN (0);
if (pfs_visible_proc(td, pn, proc)) {
@@ -177,7 +185,11 @@ pfs_close(struct vop_close_args *va)
PFS_RETURN (0);
if (pvd->pvd_pid != NO_PID) {
+#ifndef __rtems__
proc = pfind(pvd->pvd_pid);
+#else /* __rtems__ */
+ proc = &proc0;
+#endif /* __rtems__ */
} else {
proc = NULL;
}
@@ -241,13 +253,17 @@ pfs_getattr(struct vop_getattr_args *va)
break;
}
+#ifndef __rtems__
if (proc != NULL) {
vap->va_uid = proc->p_ucred->cr_ruid;
vap->va_gid = proc->p_ucred->cr_rgid;
} else {
+#endif /* __rtems__ */
vap->va_uid = 0;
vap->va_gid = 0;
+#ifndef __rtems__
}
+#endif /* __rtems__ */
if (pn->pn_attr != NULL)
error = pn_attr(curthread, proc, pn, vap);
@@ -713,10 +729,14 @@ pfs_iterate(struct thread *td, struct proc *proc, struct pfs_node *pd,
}
if (*pn != NULL && (*pn)->pn_type == pfstype_procdir) {
/* next process */
+#ifndef __rtems__
if (*p == NULL)
*p = LIST_FIRST(&allproc);
else
*p = LIST_NEXT(*p, p_list);
+#else /* __rtems__ */
+ *p = &proc0;
+#endif /* __rtems__ */
/* out of processes: next node */
if (*p == NULL)
*pn = (*pn)->pn_next;
@@ -895,6 +915,7 @@ pfs_readlink(struct vop_readlink_args *va)
if (pn->pn_fill == NULL)
PFS_RETURN (EIO);
+#ifndef __rtems__
if (pvd->pvd_pid != NO_PID) {
if ((proc = pfind(pvd->pvd_pid)) == NULL)
PFS_RETURN (EIO);
@@ -905,6 +926,7 @@ pfs_readlink(struct vop_readlink_args *va)
_PHOLD(proc);
PROC_UNLOCK(proc);
}
+#endif /* __rtems__ */
vhold(vn);
locked = VOP_ISLOCKED(vn);
VOP_UNLOCK(vn, 0);