aboutsummaryrefslogtreecommitdiff
path: root/sys/compat/linprocfs/linprocfs.c
diff options
context:
space:
mode:
authorEdward Tomasz Napierala <trasz@FreeBSD.org>2020-07-18 10:56:04 +0000
committerEdward Tomasz Napierala <trasz@FreeBSD.org>2020-07-18 10:56:04 +0000
commit978ffef22f6fe6e56b3705921b6458211cb19a9e (patch)
treecdb11d38dcf3836207b501f6dcababf532248659 /sys/compat/linprocfs/linprocfs.c
parent7ce051e799154623fe1fce2e5004f3fb0b92acaa (diff)
Add missing SysV IPC stats to linprocfs(4). Fixes 'ipcs -l',
and also helps Oracle. MFC after: 2 weeks Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D25669
Notes
Notes: svn path=/head/; revision=363303
Diffstat (limited to 'sys/compat/linprocfs/linprocfs.c')
-rw-r--r--sys/compat/linprocfs/linprocfs.c68
1 files changed, 68 insertions, 0 deletions
diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c
index e36914732f8d..2dd9b43ac017 100644
--- a/sys/compat/linprocfs/linprocfs.c
+++ b/sys/compat/linprocfs/linprocfs.c
@@ -66,6 +66,7 @@ __FBSDID("$FreeBSD$");
#include <sys/resource.h>
#include <sys/sbuf.h>
#include <sys/sem.h>
+#include <sys/shm.h>
#include <sys/smp.h>
#include <sys/socket.h>
#include <sys/syscallsubr.h>
@@ -1405,6 +1406,17 @@ linprocfs_doosbuild(PFS_FILL_ARGS)
}
/*
+ * Filler function for proc/sys/kernel/msgmax
+ */
+static int
+linprocfs_domsgmax(PFS_FILL_ARGS)
+{
+
+ sbuf_printf(sb, "%d\n", msginfo.msgmax);
+ return (0);
+}
+
+/*
* Filler function for proc/sys/kernel/msgmni
*/
static int
@@ -1416,6 +1428,17 @@ linprocfs_domsgmni(PFS_FILL_ARGS)
}
/*
+ * Filler function for proc/sys/kernel/msgmnb
+ */
+static int
+linprocfs_domsgmnb(PFS_FILL_ARGS)
+{
+
+ sbuf_printf(sb, "%d\n", msginfo.msgmnb);
+ return (0);
+}
+
+/*
* Filler function for proc/sys/kernel/pid_max
*/
static int
@@ -1439,6 +1462,39 @@ linprocfs_dosem(PFS_FILL_ARGS)
}
/*
+ * Filler function for proc/sys/kernel/shmall
+ */
+static int
+linprocfs_doshmall(PFS_FILL_ARGS)
+{
+
+ sbuf_printf(sb, "%lu\n", shminfo.shmall);
+ return (0);
+}
+
+/*
+ * Filler function for proc/sys/kernel/shmmax
+ */
+static int
+linprocfs_doshmmax(PFS_FILL_ARGS)
+{
+
+ sbuf_printf(sb, "%lu\n", shminfo.shmmax);
+ return (0);
+}
+
+/*
+ * Filler function for proc/sys/kernel/shmmni
+ */
+static int
+linprocfs_doshmmni(PFS_FILL_ARGS)
+{
+
+ sbuf_printf(sb, "%lu\n", shminfo.shmmni);
+ return (0);
+}
+
+/*
* Filler function for proc/sys/kernel/tainted
*/
static int
@@ -1837,6 +1893,7 @@ linprocfs_init(PFS_INIT_ARGS)
/* /proc/sys/... */
sys = pfs_create_dir(root, "sys", NULL, NULL, NULL, 0);
+
/* /proc/sys/kernel/... */
dir = pfs_create_dir(sys, "kernel", NULL, NULL, NULL, 0);
pfs_create_file(dir, "osrelease", &linprocfs_doosrelease,
@@ -1845,12 +1902,22 @@ linprocfs_init(PFS_INIT_ARGS)
NULL, NULL, NULL, PFS_RD);
pfs_create_file(dir, "version", &linprocfs_doosbuild,
NULL, NULL, NULL, PFS_RD);
+ pfs_create_file(dir, "msgmax", &linprocfs_domsgmax,
+ NULL, NULL, NULL, PFS_RD);
pfs_create_file(dir, "msgmni", &linprocfs_domsgmni,
NULL, NULL, NULL, PFS_RD);
+ pfs_create_file(dir, "msgmnb", &linprocfs_domsgmnb,
+ NULL, NULL, NULL, PFS_RD);
pfs_create_file(dir, "pid_max", &linprocfs_dopid_max,
NULL, NULL, NULL, PFS_RD);
pfs_create_file(dir, "sem", &linprocfs_dosem,
NULL, NULL, NULL, PFS_RD);
+ pfs_create_file(dir, "shmall", &linprocfs_doshmall,
+ NULL, NULL, NULL, PFS_RD);
+ pfs_create_file(dir, "shmmax", &linprocfs_doshmmax,
+ NULL, NULL, NULL, PFS_RD);
+ pfs_create_file(dir, "shmmni", &linprocfs_doshmmni,
+ NULL, NULL, NULL, PFS_RD);
pfs_create_file(dir, "tainted", &linprocfs_dotainted,
NULL, NULL, NULL, PFS_RD);
@@ -1887,3 +1954,4 @@ MODULE_DEPEND(linprocfs, linux, 1, 1, 1);
MODULE_DEPEND(linprocfs, procfs, 1, 1, 1);
MODULE_DEPEND(linprocfs, sysvmsg, 1, 1, 1);
MODULE_DEPEND(linprocfs, sysvsem, 1, 1, 1);
+MODULE_DEPEND(linprocfs, sysvshm, 1, 1, 1);