projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
merge in netbsd changes.
[unix-history]
/
usr
/
src
/
sys
/
miscfs
/
procfs
/
procfs_subr.c
diff --git
a/usr/src/sys/miscfs/procfs/procfs_subr.c
b/usr/src/sys/miscfs/procfs/procfs_subr.c
index
9505f33
..
6c4b989
100644
(file)
--- a/
usr/src/sys/miscfs/procfs/procfs_subr.c
+++ b/
usr/src/sys/miscfs/procfs/procfs_subr.c
@@
-8,7
+8,7
@@
*
* %sccs.include.redist.c%
*
*
* %sccs.include.redist.c%
*
- * @(#)procfs_subr.c 8.
4
(Berkeley) %G%
+ * @(#)procfs_subr.c 8.
5
(Berkeley) %G%
*
* From:
* $Id: procfs_subr.c,v 3.2 1993/12/15 09:40:17 jsp Exp $
*
* From:
* $Id: procfs_subr.c,v 3.2 1993/12/15 09:40:17 jsp Exp $
@@
-59,18
+59,20
@@
procfs_allocvp(mp, vpp, pid, pfs_type)
long pid;
pfstype pfs_type;
{
long pid;
pfstype pfs_type;
{
- int error;
struct pfsnode *pfs;
struct pfsnode *pfs;
+ struct vnode *vp;
struct pfsnode **pp;
struct pfsnode **pp;
+ int error;
loop:
for (pfs = pfshead; pfs != 0; pfs = pfs->pfs_next) {
loop:
for (pfs = pfshead; pfs != 0; pfs = pfs->pfs_next) {
+ vp = PFSTOV(pfs);
if (pfs->pfs_pid == pid &&
pfs->pfs_type == pfs_type &&
if (pfs->pfs_pid == pid &&
pfs->pfs_type == pfs_type &&
-
PFSTOV(pfs)
->v_mount == mp) {
- if (vget(
pfs->pfs_vnode
, 0))
+
vp
->v_mount == mp) {
+ if (vget(
vp
, 0))
goto loop;
goto loop;
- *vpp =
pfs->pfs_vnode
;
+ *vpp =
vp
;
return (0);
}
}
return (0);
}
}
@@
-86,18
+88,17
@@
loop:
}
pfsvplock |= PROCFS_LOCKED;
}
pfsvplock |= PROCFS_LOCKED;
- error = getnewvnode(VT_PROCFS, mp, procfs_vnodeop_p, vpp);
- if (error)
+ if (error = getnewvnode(VT_PROCFS, mp, procfs_vnodeop_p, vpp))
goto out;
goto out;
+ vp = *vpp;
- MALLOC(
(*vpp)->v_data, void *, sizeof(struct pfsnode),
-
M_TEMP, M_WAITOK)
;
+ MALLOC(
pfs, void *, sizeof(struct pfsnode), M_TEMP, M_WAITOK);
+
vp->v_data = pfs
;
- pfs = VTOPFS(*vpp);
pfs->pfs_next = 0;
pfs->pfs_pid = (pid_t) pid;
pfs->pfs_type = pfs_type;
pfs->pfs_next = 0;
pfs->pfs_pid = (pid_t) pid;
pfs->pfs_type = pfs_type;
- pfs->pfs_vnode =
*vp
p;
+ pfs->pfs_vnode =
v
p;
pfs->pfs_flags = 0;
pfs->pfs_fileno = PROCFS_FILENO(pid, pfs_type);
pfs->pfs_flags = 0;
pfs->pfs_fileno = PROCFS_FILENO(pid, pfs_type);
@@
-106,46
+107,44
@@
loop:
pfs->pfs_mode = (VREAD|VEXEC) |
(VREAD|VEXEC) >> 3 |
(VREAD|VEXEC) >> 6;
pfs->pfs_mode = (VREAD|VEXEC) |
(VREAD|VEXEC) >> 3 |
(VREAD|VEXEC) >> 6;
+ vp->v_type = VDIR;
+ vp->v_flag = VROOT;
+ break;
+
+ case Pcurproc: /* /proc/curproc = lr--r--r-- */
+ pfs->pfs_mode = (VREAD) |
+ (VREAD >> 3) |
+ (VREAD >> 6);
+ vp->v_type = VLNK;
break;
case Pproc:
pfs->pfs_mode = (VREAD|VEXEC) |
(VREAD|VEXEC) >> 3 |
(VREAD|VEXEC) >> 6;
break;
case Pproc:
pfs->pfs_mode = (VREAD|VEXEC) |
(VREAD|VEXEC) >> 3 |
(VREAD|VEXEC) >> 6;
+ vp->v_type = VDIR;
break;
case Pfile:
break;
case Pfile:
- pfs->pfs_mode = (VREAD|VWRITE);
- break;
-
case Pmem:
case Pmem:
- pfs->pfs_mode = (VREAD|VWRITE);
- break;
-
case Pregs:
case Pregs:
- pfs->pfs_mode = (VREAD|VWRITE);
- break;
-
case Pfpregs:
pfs->pfs_mode = (VREAD|VWRITE);
case Pfpregs:
pfs->pfs_mode = (VREAD|VWRITE);
+ vp->v_type = VREG;
break;
case Pctl:
break;
case Pctl:
+ case Pnote:
+ case Pnotepg:
pfs->pfs_mode = (VWRITE);
pfs->pfs_mode = (VWRITE);
+ vp->v_type = VREG;
break;
case Pstatus:
pfs->pfs_mode = (VREAD) |
(VREAD >> 3) |
(VREAD >> 6);
break;
case Pstatus:
pfs->pfs_mode = (VREAD) |
(VREAD >> 3) |
(VREAD >> 6);
- break;
-
- case Pnote:
- pfs->pfs_mode = (VWRITE);
- break;
-
- case Pnotepg:
- pfs->pfs_mode = (VWRITE);
+ vp->v_type = VREG;
break;
default:
break;
default:
@@
-257,8
+256,7
@@
vfs_getuserstr(uio, buf, buflenp)
return (EMSGSIZE);
xlen = uio->uio_resid;
return (EMSGSIZE);
xlen = uio->uio_resid;
- error = uiomove(buf, xlen, uio);
- if (error)
+ if (error = uiomove(buf, xlen, uio))
return (error);
/* allow multiple writes without seeks */
return (error);
/* allow multiple writes without seeks */
@@
-280,6
+278,7
@@
vfs_findname(nm, buf, buflen)
char *buf;
int buflen;
{
char *buf;
int buflen;
{
+
for (; nm->nm_name; nm++)
if (bcmp(buf, (char *) nm->nm_name, buflen+1) == 0)
return (nm);
for (; nm->nm_name; nm++)
if (bcmp(buf, (char *) nm->nm_name, buflen+1) == 0)
return (nm);