3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner/***********************************************************************
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* This software is part of the ast package *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Copyright (c) 1992-2010 AT&T Intellectual Property *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* and is licensed under the *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Common Public License, Version 1.0 *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* by AT&T Intellectual Property *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* A copy of the License is available at *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* http://www.opensource.org/licenses/cpl1.0.txt *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Information and Software Systems Research *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* AT&T Research *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Florham Park NJ *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Glenn Fowler <gsf@research.att.com> *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* David Korn <dgk@research.att.com> *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner***********************************************************************/
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner#define FORMAT "region=%(region)p size=%(size)d segments=%(segments)d busy=(%(busy_size)d,%(busy_blocks)d,%(busy_max)d) free=(%(free_size)d,%(free_blocks)d,%(free_max)d)"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner"[-?\n@(#)$Id: vmstate (AT&T Research) 2010-03-05 $\n]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner"[+NAME?vmstate - list the calling process vmalloc region state]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner"[+DESCRIPTION?When invoked as a shell builtin, \bvmstate\b lists the "
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "calling process \bvmalloc\b(3) state for all regions.]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner"[f:format?List the ids specified by \aformat\a. \aformat\a follows "
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "\bprintf\b(3) conventions, except that \bsfio\b(3) inline ids are used "
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "instead of arguments: "
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "%[-+]][\awidth\a[.\aprecis\a[.\abase\a]]]]]](\aid\a)\achar\a. The "
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "supported \aid\as are:]:[format:=" FORMAT "]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "[+size?The total region size.]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "[+segments?The number of segments in the region.]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "[+busy_size?The total busy block size.]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "[+busy_blocks?The number of busy blocks.]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "[+busy_max?The maximum busy block size.]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "[+free_size?The total free block size.]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "[+free_blocks?The number of free blocks.]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner "[+free_max?The maximum free block size.]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner"[+SEE ALSO?\bvmalloc\b(3)]"
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner * sfkeyprintf() lookup
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner * handle==0 for heading
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknerkey(void* handle, Sffmt_t* fp, const char* arg, char** ps, Sflong_t* pn)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner register State_t* state = (State_t*)handle;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner register char* s;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner error(2, "%s: unknown format identifier", s);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknervisit(Vmalloc_t* vm, void* addr, size_t size, Vmdisc_t* disc, void* handle)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner if (state->regions < elementsof(state->region))
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulknerb_vmstate(int argc, char** argv, void* context)
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner register int i;
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner cmdinit(argc, argv, context, ERROR_CATALOG, 0);
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner error(ERROR_USAGE|4, "%s", optusage(NiL));
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner * the walk must do no allocations because it locks the regions
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner * now we can compute and list the state of each region