summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorscottl <scottl@FreeBSD.org>2004-02-07 03:51:20 +0000
committerscottl <scottl@FreeBSD.org>2004-02-07 03:51:20 +0000
commit7720bf145ae3e83333c2c7a38300817781c0de19 (patch)
tree772cbfaeb6f9538a662060b9f8e894ca618c03c6 /tools
parenta98f273f43552887716b5b8ec728ec7bbf806a12 (diff)
downloadFreeBSD-src-7720bf145ae3e83333c2c7a38300817781c0de19.zip
FreeBSD-src-7720bf145ae3e83333c2c7a38300817781c0de19.tar.gz
Add a simple tool for checking the queue stats in the aac(4) driver. The
ioctl interface for this has been here for years, so it might as well get used.
Diffstat (limited to 'tools')
-rw-r--r--tools/tools/aac/Makefile12
-rw-r--r--tools/tools/aac/aac_checkq.c76
2 files changed, 88 insertions, 0 deletions
diff --git a/tools/tools/aac/Makefile b/tools/tools/aac/Makefile
new file mode 100644
index 0000000..49aac68
--- /dev/null
+++ b/tools/tools/aac/Makefile
@@ -0,0 +1,12 @@
+# $FreeBSD$
+BINDIR= /usr/local/bin
+
+ALL= aac_checkq
+
+all: $(ALL)
+
+aac_checkq: aac_checkq.c
+ ${CC} -o aac_checkq aac_checkq.c
+
+install: ${ALL}
+ ${INSTALL} aac_checkq ${DESTDIR}${BINDIR}
diff --git a/tools/tools/aac/aac_checkq.c b/tools/tools/aac/aac_checkq.c
new file mode 100644
index 0000000..9fb79be
--- /dev/null
+++ b/tools/tools/aac/aac_checkq.c
@@ -0,0 +1,76 @@
+/*-
+ * Copyright (c) 2004 Scott Long
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/fcntl.h>
+#include <sys/ioctl.h>
+#include "/sys/dev/aac/aac_ioctl.h"
+
+__FBSDID("$FreeBSD$");
+
+/*
+ * Simple program to print out the queue stats on the given queue index.
+ * See /sys/dev/aac/aac_ioctl.h for the definitions of each queue index.
+ */
+
+void
+usage(void)
+{
+ printf("Usage: aac_checkq <queue_number>\n");
+ exit(1);
+}
+
+int
+main(int argc, char **argv)
+{
+ union aac_statrequest sr;
+ int fd, retval, queue;
+
+ if (argc != 2)
+ usage();
+
+ fd = open("/dev/aac0", O_RDWR);
+ if (fd == -1) {
+ printf("couldn't open aac0: %s\n", strerror(errno));
+ return (-1);
+ }
+
+ queue = atoi(argv[1]);
+ printf("Getting stats for queue %d\n", queue);
+ bzero(&sr, sizeof(union aac_statrequest));
+ sr.as_item = queue;
+ retval = ioctl(fd, AACIO_STATS, &sr);
+ if (retval == -1) {
+ printf("error on ioctl: %s\n", strerror(errno));
+ return (-1);
+ }
+
+ printf("length= %d, max= %d\n",sr.as_qstat.q_length, sr.as_qstat.q_max);
+
+ close(fd);
+ return 0;
+}
OpenPOWER on IntegriCloud