summaryrefslogtreecommitdiffstats
path: root/sys/fs/procfs
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1994-09-24 17:01:05 +0000
committerdg <dg@FreeBSD.org>1994-09-24 17:01:05 +0000
commitc60a583f860371784b3926d40e01d53c088a6ca7 (patch)
tree414669f3c655bf1f90bf96a6ecba582641000d58 /sys/fs/procfs
parent9cac835749a4935d1018265a9f878739c9a9858d (diff)
downloadFreeBSD-src-c60a583f860371784b3926d40e01d53c088a6ca7.zip
FreeBSD-src-c60a583f860371784b3926d40e01d53c088a6ca7.tar.gz
1) Added "." and ".." entries.
2) Fixed directory size to return something reasonable. 3) Disabled "file" until the code is completed. 4) Corrected directory link counts.
Diffstat (limited to 'sys/fs/procfs')
-rw-r--r--sys/fs/procfs/procfs_vnops.c24
1 files changed, 20 insertions, 4 deletions
diff --git a/sys/fs/procfs/procfs_vnops.c b/sys/fs/procfs/procfs_vnops.c
index 7605893..1a74859 100644
--- a/sys/fs/procfs/procfs_vnops.c
+++ b/sys/fs/procfs/procfs_vnops.c
@@ -36,7 +36,7 @@
*
* @(#)procfs_vnops.c 8.6 (Berkeley) 2/7/94
*
- * $Id: procfs_vnops.c,v 1.4 1994/08/18 22:35:15 wollman Exp $
+ * $Id: procfs_vnops.c,v 1.5 1994/09/21 03:47:07 wollman Exp $
*/
/*
@@ -74,7 +74,11 @@ static struct pfsnames {
} procent[] = {
#define N(s) sizeof(s)-1, s
/* namlen, nam, type */
+ { N("."), Pproc },
+ { N(".."), Proot },
+#if 0
{ N("file"), Pfile },
+#endif
{ N("mem"), Pmem },
{ N("regs"), Pregs },
{ N("fpregs"), Pfpregs },
@@ -395,15 +399,17 @@ procfs_getattr(ap)
switch (pfs->pfs_type) {
case Proot:
- vap->va_nlink = 2;
+ vap->va_nlink = nprocs + 3;
vap->va_uid = 0;
vap->va_gid = 0;
+ vap->va_bytes = vap->va_size = DEV_BSIZE;
break;
case Pproc:
- vap->va_nlink = 2;
+ vap->va_nlink = Nprocent;
vap->va_uid = procp->p_ucred->cr_uid;
vap->va_gid = procp->p_ucred->cr_gid;
+ vap->va_bytes = vap->va_size = DEV_BSIZE;
break;
case Pfile:
@@ -704,7 +710,7 @@ procfs_readdir(ap)
p = allproc;
-#define PROCFS_XFILES 1 /* number of other entries, like "curproc" */
+#define PROCFS_XFILES 3 /* number of other entries, like "curproc" */
pcnt = PROCFS_XFILES;
while (p && uio->uio_resid >= UIO_MX) {
@@ -714,6 +720,16 @@ procfs_readdir(ap)
switch (i) {
case 0:
+ dp->d_fileno = PROCFS_FILENO(0, Proot);
+ dp->d_namlen = sprintf(dp->d_name, ".");
+ break;
+
+ case 1:
+ dp->d_fileno = PROCFS_FILENO(0, Proot);
+ dp->d_namlen = sprintf(dp->d_name, "..");
+ break;
+
+ case 2:
/* ship out entry for "curproc" */
dp->d_fileno = PROCFS_FILENO(PID_MAX+1, Pproc);
dp->d_namlen = sprintf(dp->d_name, "curproc");
OpenPOWER on IntegriCloud