diff options
| author | pgoyette <pgoyette@NetBSD.org> | 2019-01-27 02:08:33 +0000 |
|---|---|---|
| committer | pgoyette <pgoyette@NetBSD.org> | 2019-01-27 02:08:33 +0000 |
| commit | cc17ee2ece085d7d746bcd8fa9be19170855aaac (patch) | |
| tree | 5be40613f405cb081b2c44410b1506781927f8e3 /sbin/modstat | |
| parent | 10dd4cc92542aa04b0e59469a484a48e4c3cdd24 (diff) | |
Merge the [pgoyette-compat] branch
Diffstat (limited to 'sbin/modstat')
| -rw-r--r-- | sbin/modstat/main.c | 30 | ||||
| -rw-r--r-- | sbin/modstat/modstat.8 | 10 |
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 |
