PERFORCE change 166171 for review
Gabor Pali
pgj at FreeBSD.org
Thu Jul 16 19:00:34 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=166171
Change 166171 by pgj at petymeg-current on 2009/07/16 18:59:33
Add "ABI-proof" structures and sysctl(8) variables to support live
monitoring functions of libnetstat:
- kern.ipc.sfbstats -- sendfile(2) statistics
- kern.ipc.mbstats -- mbuf(9) statistics
Affected files ...
.. //depot/projects/soc2009/pgj_libstat/src/sys/kern/kern_mbuf.c#2 edit
.. //depot/projects/soc2009/pgj_libstat/src/sys/kern/uipc_syscalls.c#3 edit
.. //depot/projects/soc2009/pgj_libstat/src/sys/sys/mbuf.h#2 edit
Differences ...
==== //depot/projects/soc2009/pgj_libstat/src/sys/kern/kern_mbuf.c#2 (text+ko) ====
@@ -207,6 +207,25 @@
SYSCTL_STRUCT(_kern_ipc, OID_AUTO, mbstat, CTLFLAG_RD, &mbstat, mbstat,
"Mbuf general information and statistics");
+static int
+mbuf_stats(SYSCTL_HANDLER_ARGS)
+{
+ struct mbstat_data mbsd;
+ int error;
+
+ error = 0;
+ bzero(&mbsd, sizeof(mbsd));
+
+ mbsd.mbd_version = MBSTAT_DATA_VERSION;
+ mbsd.mbd_drain = mbstat.m_drain;
+
+ error = SYSCTL_OUT(req, &mbsd, sizeof(mbsd));
+ return (error);
+}
+
+SYSCTL_PROC(_kern_ipc, OID_AUTO, mbstats, CTLFLAG_RD|CTLTYPE_STRUCT, 0, 0,
+ mbuf_stats, "s,struct mbstat_data", "Statistics on mbuf");
+
/*
* Zones from which we allocate.
*/
==== //depot/projects/soc2009/pgj_libstat/src/sys/kern/uipc_syscalls.c#3 (text+ko) ====
@@ -107,6 +107,30 @@
SYSCTL_INT(_kern_ipc, OID_AUTO, nsfbufsused, CTLFLAG_RD, &nsfbufsused, 0,
"Number of sendfile(2) sf_bufs in use");
+static int
+sfbuf_stats(SYSCTL_HANDLER_ARGS)
+{
+ struct sfbuf_data sfd;
+ int error;
+
+ error = 0;
+ bzero(&sfd, sizeof(sfd));
+
+ sfd.sfd_version = SFBUF_DATA_VERSION;
+ sfd.sfd_nbufs = nsfbufs;
+ sfd.sfd_nbufs_peak = nsfbufspeak;
+ sfd.sfd_nbufs_used = nsfbufsused;
+ sfd.sfd_iocnt = mbstat.sf_iocnt;
+ sfd.sfd_allocfail = mbstat.sf_allocfail;
+ sfd.sfd_allocwait = mbstat.sf_allocwait;
+
+ error = SYSCTL_OUT(req, &sfd, sizeof(sfd));
+ return (error);
+}
+
+SYSCTL_PROC(_kern_ipc, OID_AUTO, sfbstats, CTLFLAG_RD|CTLTYPE_STRUCT, 0, 0,
+ sfbuf_stats, "s,struct sfbuf_data", "Statistics on sendfile(2) buffers");
+
/*
* Convert a user file descriptor to a kernel file entry. A reference on the
* file entry is held upon returning. This is lighter weight than
==== //depot/projects/soc2009/pgj_libstat/src/sys/sys/mbuf.h#2 (text+ko) ====
@@ -302,6 +302,32 @@
};
/*
+ * Statistics structures to be used by user space monitoring tools.
+ */
+#define MBSTAT_DATA_VERSION 0x00000001
+
+/* Exported by: kern.ipc.mbstats */
+struct mbstat_data {
+ u_int32_t mbd_version;
+ u_int64_t mbd_drain;
+ u_int8_t __mbd_pad[4];
+};
+
+#define SFBUF_DATA_VERSION 0x00000001
+
+/* Exported by: kern.ipc.sfbstats */
+struct sfbuf_data {
+ u_int32_t sfd_version;
+ u_int64_t sfd_nbufs;
+ u_int64_t sfd_nbufs_peak;
+ u_int64_t sfd_nbufs_used;
+ u_int64_t sfd_iocnt;
+ u_int64_t sfd_allocfail;
+ u_int64_t sfd_allocwait;
+ u_int8_t __sfd_pad[12];
+};
+
+/*
* Flags specifying how an allocation should be made.
*
* The flag to use is as follows:
More information about the p4-projects
mailing list