summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCan Erkin Acar <canacar@cvs.openbsd.org>2008-11-02 07:14:17 +0000
committerCan Erkin Acar <canacar@cvs.openbsd.org>2008-11-02 07:14:17 +0000
commit976296766b80f6c1f853db0e217d47972405e1eb (patch)
tree51ff1b47e481b422d5caad8164c4fca714141325
parentba01741f59523b781311fbbeb62e1818153a4836 (diff)
Add the option to sort by requests to the pool view, and document
the hotkeys 'o' to select and 'r' to reverse column orderings.
-rw-r--r--usr.bin/systat/pool.c25
-rw-r--r--usr.bin/systat/systat.126
2 files changed, 46 insertions, 5 deletions
diff --git a/usr.bin/systat/pool.c b/usr.bin/systat/pool.c
index c6bbede69dc..1f7500dc722 100644
--- a/usr.bin/systat/pool.c
+++ b/usr.bin/systat/pool.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pool.c,v 1.1 2008/11/02 06:23:28 canacar Exp $ */
+/* $OpenBSD: pool.c,v 1.2 2008/11/02 07:14:16 canacar Exp $ */
/*
* Copyright (c) 2008 Can Erkin Acar <canacar@openbsd.org>
*
@@ -32,6 +32,7 @@ void showpool(int k);
/* qsort callbacks */
int sort_name_callback(const void *s1, const void *s2);
+int sort_req_callback(const void *s1, const void *s2);
struct pool_info {
char name[32];
@@ -82,7 +83,8 @@ field_def *view_pool_0[] = {
};
order_type pool_order_list[] = {
- {"name", "name", 0, sort_name_callback},
+ {"name", "name", 'N', sort_name_callback},
+ {"requests", "requests", 'Q', sort_req_callback},
{NULL, NULL, 0, NULL}
};
@@ -105,7 +107,22 @@ sort_name_callback(const void *s1, const void *s2)
p1 = (struct pool_info *)s1;
p2 = (struct pool_info *)s2;
- return strcmp(p1->name, p2->name);
+ return strcmp(p1->name, p2->name) * sortdir;
+}
+
+int
+sort_req_callback(const void *s1, const void *s2)
+{
+ struct pool_info *p1, *p2;
+ p1 = (struct pool_info *)s1;
+ p2 = (struct pool_info *)s2;
+
+ if (p1->pool.pr_nget < p2->pool.pr_nget)
+ return sortdir;
+ if (p1->pool.pr_nget > p2->pool.pr_nget)
+ return -sortdir;
+
+ return sort_name_callback(s1, s2);
}
void
@@ -127,7 +144,7 @@ sort_pool(void)
if (num_pools <= 0)
return;
- qsort(pools, num_pools, sizeof(struct pool_info), ordering->func);
+ mergesort(pools, num_pools, sizeof(struct pool_info), ordering->func);
}
int
diff --git a/usr.bin/systat/systat.1 b/usr.bin/systat/systat.1
index 151f3aee7d6..800933241e8 100644
--- a/usr.bin/systat/systat.1
+++ b/usr.bin/systat/systat.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: systat.1,v 1.68 2008/11/02 06:23:28 canacar Exp $
+.\" $OpenBSD: systat.1,v 1.69 2008/11/02 07:14:16 canacar Exp $
.\" $NetBSD: systat.1,v 1.6 1996/05/10 23:16:39 thorpej Exp $
.\"
.\" Copyright (c) 1985, 1990, 1993
@@ -153,12 +153,18 @@ line typed as a command.
While entering a command the
current character erase, word erase, and line kill characters
may be used.
+.It Ic o
+Select the next ordering which sorts the rows according to a
+combination of columns. Available orderings depend on the
+view. Not all views support orderings.
.It Ic p
Pause
.Nm .
.It Ic q
Exit
.Nm .
+.It Ic r
+Reverse the selected ordering if supported by the view.
.It Ic ^A \*(Ba Aq Ic Home
Jump to the beginning of the current view.
.It Ic ^B \*(Ba Aq Ic right arrow
@@ -330,6 +336,10 @@ Display kernel
.Xr pool 9
statistics similar to the output of
.Cm vmstat Fl m .
+Available orderings are:
+.Ic name
+and
+.Ic requests .
.It Ic queues
Display statistics about the active
.Xr altq 9
@@ -346,6 +356,20 @@ in a format similar to that of
.It Ic states
Display pf states statistics, similar to the output of
.Cm pfctl Fl s Cm states .
+Available orderings are:
+.Ic none ,
+.Ic bytes ,
+.Ic expiry ,
+.Ic packets ,
+.Ic age ,
+.Ic source address ,
+.Ic source port ,
+.Ic destination address ,
+.Ic destination port ,
+.Ic rate ,
+and
+.Ic peak
+columns.
.It Ic swap
Show information about swap space usage on all the
swap areas compiled into the kernel.