summaryrefslogtreecommitdiff
path: root/sbin/modstat
diff options
context:
space:
mode:
authorpgoyette <pgoyette@NetBSD.org>2019-01-27 02:08:33 +0000
committerpgoyette <pgoyette@NetBSD.org>2019-01-27 02:08:33 +0000
commitcc17ee2ece085d7d746bcd8fa9be19170855aaac (patch)
tree5be40613f405cb081b2c44410b1506781927f8e3 /sbin/modstat
parent10dd4cc92542aa04b0e59469a484a48e4c3cdd24 (diff)
Merge the [pgoyette-compat] branch
Diffstat (limited to 'sbin/modstat')
-rw-r--r--sbin/modstat/main.c30
-rw-r--r--sbin/modstat/modstat.810
2 files changed, 24 insertions, 16 deletions
diff --git a/sbin/modstat/main.c b/sbin/modstat/main.c
index 8bb0d0b01b7..4499db0462f 100644
--- a/sbin/modstat/main.c
+++ b/sbin/modstat/main.c
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.24 2016/11/16 10:43:37 pgoyette Exp $ */
+/* $NetBSD: main.c,v 1.25 2019/01/27 02:08:36 pgoyette Exp $ */
/*-
* Copyright (c) 2008 The NetBSD Foundation, Inc.
@@ -28,7 +28,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: main.c,v 1.24 2016/11/16 10:43:37 pgoyette Exp $");
+__RCSID("$NetBSD: main.c,v 1.25 2019/01/27 02:08:36 pgoyette Exp $");
#endif /* !lint */
#include <sys/module.h>
@@ -81,6 +81,7 @@ main(int argc, char **argv)
int ch, rc, modauto = 1;
size_t maxnamelen = 16, i, modautolen;
char loadable = '\0';
+ const char *reqoff, *req;
bool address = false;
name = NULL;
@@ -177,29 +178,36 @@ main(int argc, char **argv)
len = iov.iov_len;
}
- len = iov.iov_len / sizeof(modstat_t);
- qsort(iov.iov_base, len, sizeof(modstat_t), modstatcmp);
- for (i = 0, ms = iov.iov_base; i < len; i++, ms++) {
+ len = *(int *)iov.iov_base;
+ ms = (modstat_t *)((char *)iov.iov_base + sizeof(int));
+
+ qsort(ms, len, sizeof(modstat_t), modstatcmp);
+ for (i = 0; i < len; i++, ms++) {
size_t namelen = strlen(ms->ms_name);
if (maxnamelen < namelen)
maxnamelen = namelen;
}
+ ms = (modstat_t *)((char *)iov.iov_base + sizeof(int));
+ reqoff = (char *)(&ms[len]);
+
printf("%-*s %-8s %-8s %-4s %5s ",
(int)maxnamelen, "NAME", "CLASS", "SOURCE", "FLAG", "REFS");
if (address)
printf("%-16s ", "ADDRESS");
printf("%7s %s \n", "SIZE", "REQUIRES");
- for (ms = iov.iov_base; len != 0; ms++, len--) {
+
+ for (; len != 0; ms++, len--) {
const char *class;
const char *source;
+ if (ms->ms_reqoffset == 0)
+ req = "-";
+ else {
+ req = &reqoff[ms->ms_reqoffset];
+ }
if (name != NULL && strcmp(ms->ms_name, name) != 0) {
continue;
}
- if (ms->ms_required[0] == '\0') {
- ms->ms_required[0] = '-';
- ms->ms_required[1] = '\0';
- }
if (ms->ms_size == 0) {
sbuf[0] = '-';
sbuf[1] = '\0';
@@ -221,7 +229,7 @@ main(int argc, char **argv)
ms->ms_refcnt);
if (address)
printf("%-16" PRIx64 " ", ms->ms_addr);
- printf("%7s %s\n", sbuf, ms->ms_required);
+ printf("%7s %s\n", sbuf, (req));
}
exit(EXIT_SUCCESS);
diff --git a/sbin/modstat/modstat.8 b/sbin/modstat/modstat.8
index 1e00e126aa9..850355ec615 100644
--- a/sbin/modstat/modstat.8
+++ b/sbin/modstat/modstat.8
@@ -1,4 +1,4 @@
-.\" $NetBSD: modstat.8,v 1.22 2016/09/12 06:54:00 wiz Exp $
+.\" $NetBSD: modstat.8,v 1.23 2019/01/27 02:08:36 pgoyette Exp $
.\"
.\" Copyright (c) 1993 Christopher G. Demetriou
.\" All rights reserved.
@@ -32,7 +32,7 @@
.\"
.\" <<Id: LICENSE,v 1.2 2000/06/14 15:57:33 cgd Exp>>
.\"
-.Dd September 12, 2016
+.Dd September 8, 2018
.Dt MODSTAT 8
.Os
.Sh NAME
@@ -40,8 +40,8 @@
.Nd display status of loaded kernel modules
.Sh SYNOPSIS
.Nm
-.Op Fl Aaen
-.Op Ar name
+.Op Fl Aaek
+.Op Fl n Ar name | name
.Sh DESCRIPTION
The
.Nm
@@ -97,7 +97,7 @@ The module flags:
.It Dv a
Module is auto-loaded.
.It Dv f
-Required the
+Requires the
.Xr modload 8
flag
.Fl f