git: e79866ddf1c2 - main - procstat(1): add ability to specify subcommands not requiring pid lists
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 09 Apr 2022 21:48:25 UTC
The branch main has been updated by kib: URL: https://cgit.FreeBSD.org/src/commit/?id=e79866ddf1c2147890226830838dcca5174c18e1 commit e79866ddf1c2147890226830838dcca5174c18e1 Author: Konstantin Belousov <kib@FreeBSD.org> AuthorDate: 2022-04-07 18:27:12 +0000 Commit: Konstantin Belousov <kib@FreeBSD.org> CommitDate: 2022-04-09 21:47:50 +0000 procstat(1): add ability to specify subcommands not requiring pid lists Add PS_MODE_NO_KINFO_PROC cmd modifier that indicates that neither process list should be queried from the kernel, nor list of pids or `-a` switch provided on the command line to filter the output. This is intended for use by commands that query information not neccessary attributed to specific process. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D34834 --- usr.bin/procstat/procstat.c | 9 ++++++++- usr.bin/procstat/procstat.h | 1 + 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/usr.bin/procstat/procstat.c b/usr.bin/procstat/procstat.c index bb3b9e9de5a8..220f63f2703e 100644 --- a/usr.bin/procstat/procstat.c +++ b/usr.bin/procstat/procstat.c @@ -449,7 +449,8 @@ main(int argc, char *argv[]) } /* Must specify either the -a flag or a list of pids. */ - if (!(aflag == 1 && argc == 0) && !(aflag == 0 && argc > 0)) + if (!(aflag == 1 && argc == 0) && !(aflag == 0 && argc > 0) && + (cmd->cmp & PS_MODE_NO_KINFO_PROC) == 0) usage(cmd); if (memf != NULL) @@ -465,6 +466,11 @@ main(int argc, char *argv[]) xo_open_container(progname); xo_open_container(xocontainer); + if ((cmd->cmp & PS_MODE_NO_KINFO_PROC) != 0) { + cmd->cmd(prstat, NULL); + goto iter; + } + if (aflag) { p = procstat_getprocs(prstat, KERN_PROC_PROC, 0, &cnt); if (p == NULL) @@ -520,6 +526,7 @@ main(int argc, char *argv[]) } } +iter: xo_close_container(xocontainer); xo_close_container(progname); xo_finish(); diff --git a/usr.bin/procstat/procstat.h b/usr.bin/procstat/procstat.h index 5a0bc193ab45..5b54d4c4ff2f 100644 --- a/usr.bin/procstat/procstat.h +++ b/usr.bin/procstat/procstat.h @@ -44,6 +44,7 @@ enum { PS_OPT_SIGNUM = 0x08, PS_OPT_VERBOSE = 0x10, PS_MODE_COMPAT = 0x20, + PS_MODE_NO_KINFO_PROC = 0x40, }; #define PS_SUBCOMMAND_OPTS \