Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 8 Nov 2006 20:23:09 -0500
From:      Jung-uk Kim <jkim@FreeBSD.org>
To:        freebsd-emulation@FreeBSD.org
Subject:   [PATCH] Two new linprocfs IPC entries
Message-ID:  <200611082023.12907.jkim@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

--Boundary-00=_AMoUFwvyKMpVQZB
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

This patch adds /proc/sys/kernel/msgmni and /proc/sys/kernel/sem 
entries.  This fixes LTP msgget03 and semget05 tests.

Jung-uk Kim

--Boundary-00=_AMoUFwvyKMpVQZB
Content-Type: text/x-diff;
  charset="iso-8859-1";
  name="linprocfs.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename="linprocfs.diff"

--- src/sys/compat/linprocfs/linprocfs.c.orig	Mon Oct 30 08:56:58 2006
+++ src/sys/compat/linprocfs/linprocfs.c	Wed Nov  8 20:01:54 2006
@@ -925,6 +925,24 @@
 }
 
 /*
+ * Filler function for proc/sys/kernel/msgmni
+ */
+static int
+linprocfs_domsgmni(PFS_FILL_ARGS)
+{
+	int msgmni;
+	size_t size;
+
+	size = sizeof(msgmni);
+	if (kernel_sysctlbyname(td, "kern.ipc.msgmni", &msgmni, &size,
+	    0, 0, 0, 0) != 0)
+		msgmni = 0;
+	sbuf_printf(sb, "%i\n", msgmni);
+
+	return (0);
+}
+
+/*
  * Filler function for proc/sys/kernel/pid_max
  */
 static int
@@ -937,6 +955,44 @@
 }
 
 /*
+ * Filler function for proc/sys/kernel/sem
+ */
+static int
+linprocfs_dosem(PFS_FILL_ARGS)
+{
+	int semmsl, semmns, semopm, semmni;
+	size_t size;
+
+	/* Field 1: SEMMSL */
+	size = sizeof(semmsl);
+	if (kernel_sysctlbyname(td, "kern.ipc.semmsl", &semmsl, &size,
+	    0, 0, 0, 0) != 0)
+		semmsl = 0;
+
+	/* Field 2: SEMMNS */
+	size = sizeof(semmns);
+	if (kernel_sysctlbyname(td, "kern.ipc.semmns", &semmns, &size,
+	    0, 0, 0, 0) != 0)
+		semmns = 0;
+
+	/* Field 3: SEMOPM */
+	size = sizeof(semopm);
+	if (kernel_sysctlbyname(td, "kern.ipc.semopm", &semopm, &size,
+	    0, 0, 0, 0) != 0)
+		semopm = 0;
+
+	/* Field 4: SEMMNI */
+	size = sizeof(semmni);
+	if (kernel_sysctlbyname(td, "kern.ipc.semmni", &semmni, &size,
+	    0, 0, 0, 0) != 0)
+		semmni = 0;
+
+	sbuf_printf(sb, "%i %i %i %i\n", semmsl, semmns, semopm, semmni);
+
+	return (0);
+}
+
+/*
  * Filler function for proc/scsi/device_info
  */
 static int
@@ -1080,7 +1136,11 @@
 	dir = pfs_create_dir(root, "sys", NULL, NULL, 0);
 	/* /proc/sys/kernel/... */
 	dir = pfs_create_dir(dir, "kernel", NULL, NULL, 0);
+	pfs_create_file(dir, "msgmni", &linprocfs_domsgmni,
+	    NULL, NULL, PFS_RD);
 	pfs_create_file(dir, "pid_max", &linprocfs_dopid_max,
+	    NULL, NULL, PFS_RD);
+	pfs_create_file(dir, "sem", &linprocfs_dosem,
 	    NULL, NULL, PFS_RD);
 
 	return (0);

--Boundary-00=_AMoUFwvyKMpVQZB--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200611082023.12907.jkim>