13d91be41SRobert Watson /*- 24d846d26SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 31de7b4b8SPedro F. Giffuni * 43d91be41SRobert Watson * Copyright (c) 2007 Robert N. M. Watson 5474b62b8SAllan Jude * Copyright (c) 2015 Allan Jude <allanjude@freebsd.org> 686be94fcSTycho Nightingale * Copyright (c) 2017 Dell EMC 73d91be41SRobert Watson * All rights reserved. 83d91be41SRobert Watson * 93d91be41SRobert Watson * Redistribution and use in source and binary forms, with or without 103d91be41SRobert Watson * modification, are permitted provided that the following conditions 113d91be41SRobert Watson * are met: 123d91be41SRobert Watson * 1. Redistributions of source code must retain the above copyright 133d91be41SRobert Watson * notice, this list of conditions and the following disclaimer. 143d91be41SRobert Watson * 2. Redistributions in binary form must reproduce the above copyright 153d91be41SRobert Watson * notice, this list of conditions and the following disclaimer in the 163d91be41SRobert Watson * documentation and/or other materials provided with the distribution. 173d91be41SRobert Watson * 183d91be41SRobert Watson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 193d91be41SRobert Watson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 203d91be41SRobert Watson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 213d91be41SRobert Watson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 223d91be41SRobert Watson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 233d91be41SRobert Watson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 243d91be41SRobert Watson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 253d91be41SRobert Watson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 263d91be41SRobert Watson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 273d91be41SRobert Watson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 283d91be41SRobert Watson * SUCH DAMAGE. 293d91be41SRobert Watson */ 303d91be41SRobert Watson 31474b62b8SAllan Jude #include <libxo/xo.h> 32474b62b8SAllan Jude 333d91be41SRobert Watson #ifndef PROCSTAT_H 343d91be41SRobert Watson #define PROCSTAT_H 353d91be41SRobert Watson 36474b62b8SAllan Jude #define PROCSTAT_XO_VERSION "1" 37474b62b8SAllan Jude 382a243b95SBrooks Davis enum { 392a243b95SBrooks Davis PS_OPT_CAPABILITIES = 0x01, 402a243b95SBrooks Davis PS_OPT_NOHEADER = 0x02, 412a243b95SBrooks Davis PS_OPT_PERTHREAD = 0x04, 422a243b95SBrooks Davis PS_OPT_SIGNUM = 0x08, 43085e0494SKonstantin Belousov PS_OPT_VERBOSE = 0x10, 44085e0494SKonstantin Belousov PS_MODE_COMPAT = 0x20, 45e79866ddSKonstantin Belousov PS_MODE_NO_KINFO_PROC = 0x40, 462a243b95SBrooks Davis }; 472a243b95SBrooks Davis 482a243b95SBrooks Davis #define PS_SUBCOMMAND_OPTS \ 492a243b95SBrooks Davis (PS_OPT_CAPABILITIES | PS_OPT_SIGNUM | \ 502a243b95SBrooks Davis PS_OPT_PERTHREAD | PS_OPT_VERBOSE) 512a243b95SBrooks Davis 522a243b95SBrooks Davis extern int procstat_opts; 533d91be41SRobert Watson 543d91be41SRobert Watson struct kinfo_proc; 553d91be41SRobert Watson void kinfo_proc_sort(struct kinfo_proc *kipp, int count); 563d32d4a7SEric van Gyzen const char * kinfo_proc_thread_name(const struct kinfo_proc *kipp); 573d91be41SRobert Watson 58a5229a25SKonstantin Belousov void procstat_advlocks(struct procstat *prstat, struct kinfo_proc *kipp); 59729e63c3SMikolaj Golub void procstat_args(struct procstat *prstat, struct kinfo_proc *kipp); 6061e1b7c6SMikolaj Golub void procstat_auxv(struct procstat *prstat, struct kinfo_proc *kipp); 612a243b95SBrooks Davis void procstat_basic(struct procstat *prstat, struct kinfo_proc *kipp); 6266e2f999SMikolaj Golub void procstat_bin(struct procstat *prstat, struct kinfo_proc *kipp); 63e40d6078SMikolaj Golub void procstat_cred(struct procstat *prstat, struct kinfo_proc *kipp); 64cee9136cSScott Long void procstat_cs(struct procstat *prstat, struct kinfo_proc *kipp); 65729e63c3SMikolaj Golub void procstat_env(struct procstat *prstat, struct kinfo_proc *kipp); 660daf62d9SStanislav Sedov void procstat_files(struct procstat *prstat, struct kinfo_proc *kipp); 67*28f4cf92SKonstantin Belousov void procstat_kqueues(struct procstat *prstat, struct kinfo_proc *kipp); 682a243b95SBrooks Davis void procstat_kstack(struct procstat *prstat, struct kinfo_proc *kipp); 695ac9320dSKonstantin Belousov void procstat_rlimitusage(struct procstat *procstat, 705ac9320dSKonstantin Belousov struct kinfo_proc *kipp); 71085e0494SKonstantin Belousov void procstat_pargs(struct procstat *prstat, struct kinfo_proc *kipp); 72085e0494SKonstantin Belousov void procstat_penv(struct procstat *prstat, struct kinfo_proc *kipp); 732a243b95SBrooks Davis void procstat_ptlwpinfo(struct procstat *prstat, struct kinfo_proc *kipp); 74085e0494SKonstantin Belousov void procstat_pwdx(struct procstat *prstat, struct kinfo_proc *kipp); 7521b4f75aSMikolaj Golub void procstat_rlimit(struct procstat *prstat, struct kinfo_proc *kipp); 76dc0aa067SJohn Baldwin void procstat_rusage(struct procstat *prstat, struct kinfo_proc *kipp); 7724d57fa8SKonstantin Belousov void procstat_sigfastblock(struct procstat *procstat, 7824d57fa8SKonstantin Belousov struct kinfo_proc *kipp); 790daf62d9SStanislav Sedov void procstat_sigs(struct procstat *prstat, struct kinfo_proc *kipp); 80efade150SMikolaj Golub void procstat_threads(struct procstat *prstat, struct kinfo_proc *kipp); 810daf62d9SStanislav Sedov void procstat_threads_sigs(struct procstat *prstat, struct kinfo_proc *kipp); 82eee7107cSMikolaj Golub void procstat_vm(struct procstat *prstat, struct kinfo_proc *kipp); 833d91be41SRobert Watson 843d91be41SRobert Watson #endif /* !PROCSTAT_H */ 85