Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 30 Jan 2006 07:48:43 GMT
From:      Alan Cox <alc@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 90670 for review
Message-ID:  <200601300748.k0U7mhEN061605@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=90670

Change 90670 by alc@alc_home on 2006/01/30 07:48:35

	Add a sysctl for displaying the cache queue.

Affected files ...

.. //depot/projects/superpages/src/sys/vm/vm_buddy.c#12 edit

Differences ...

==== //depot/projects/superpages/src/sys/vm/vm_buddy.c#12 (text+ko) ====

@@ -53,6 +53,11 @@
 SYSCTL_OID(_vm, OID_AUTO, buddy, CTLTYPE_STRING | CTLFLAG_RD,
     NULL, 0, sysctl_vm_buddy, "A", "Buddy Info");
 
+static int sysctl_vm_cacheq(SYSCTL_HANDLER_ARGS);
+
+SYSCTL_OID(_vm, OID_AUTO, cacheq, CTLTYPE_STRING | CTLFLAG_RD,
+    NULL, 0, sysctl_vm_cacheq, "A", "Cache Queue Info");
+
 static __inline void buddyq_insert(int baseq, int q, vm_page_t m);
 static __inline void buddyq_remove(vm_page_t m);
 static __inline void buddyq_split(vm_page_t m, int q, int Q);
@@ -87,6 +92,31 @@
 /*
  *
  */
+static int
+sysctl_vm_cacheq(SYSCTL_HANDLER_ARGS)
+{
+	struct sbuf sbuf;
+	char *cbuf;
+	const int cbufsize = (BUDDY_QUEUES + 1)*81;
+	int error, q;
+
+	cbuf = malloc(cbufsize, M_TEMP, M_WAITOK | M_ZERO);
+	sbuf_new(&sbuf, cbuf, cbufsize, SBUF_FIXEDLEN);
+	sbuf_printf(&sbuf, "\nORDER     SIZE  NUMBER\n\n");
+	for (q = BUDDY_QUEUES - 1; q >= 0; q--)
+		sbuf_printf(&sbuf, "%5.5d: %6.6dK, %6.6d\n", q,
+		    1 << (PAGE_SHIFT - 10 + q),
+		    vm_page_queues[PQ_CACHE + q].lcnt);
+	sbuf_finish(&sbuf);
+	error = SYSCTL_OUT(req, sbuf_data(&sbuf), sbuf_len(&sbuf));
+	sbuf_delete(&sbuf);
+	free(cbuf, M_TEMP);
+	return (error);
+}
+
+/*
+ *
+ */
 static __inline void
 buddyq_insert(int baseq, int q, vm_page_t m)
 {



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