System Calls meminfo(2)
NAME
meminfo - provide information about memory
SYNOPSIS
#include
#include
int meminfo(const uint64_t inaddr[], int addr_count,
const uint_t info_req[], int info_count, uint64_t outdata[],
uint_t validity[]);
PARAMETERS
inaddr array of input addresses; the maximum number of addresses that can be processed for eachcall is MAX_MEMINFO_CNT
addr_count number of addresses
info_req array of types of information requested
info_count number of pieces of information requested for
each address in inaddr outdata array into which results are placed; arraysize must be the product of info_count and
addr_count
validity array of size addr_count containing bitwise
result codes; 0th bit evaluates validity of corresponding input address, 1st bit validityof response to first member of info_req, and
so onDESCRIPTION
The meminfo() function provides information about virtual
and physical memory particular to the calling process. The user or developer of performance utilities can use this information to analyze system memory allocations and develop a better understanding of the factors affecting application performance.The caller of meminfo() can obtain the following types of
information about both virtual and physical memory.SunOS 5.11 Last change: 21 Feb 2003 1
System Calls meminfo(2)
MEMINFO_VPHYSICAL physical address corresponding to
virtual addressMEMINFO_VLGRP locality group of physical page
corresponding to virtual addressMEMINFO_VPAGESIZE size of physical page correspond-
ing to virtual addressMEMINFO_VREPLCNT number of replicated physical
pages corresponding to specified virtual addressMEMINFO_VREPL | n nth physical replica of specified
virtual addressMEMINFO_VREPL_LGRP | n lgrp of nth physical replica of
specified virtual addressMEMINFO_PLGRP locality group of specified physi-
cal addressRETURN VALUES
Upon successful completion meminfo() returns 0. Otherwise -1
is returned and errno is set to indicate the error.ERRORS
The meminfo() function will fail if:
EFAULT The area pointed to by outdata or validity couldnot be written, or the data pointed to by info_req
or inaddr could not be read.EINVAL The value of info_count is greater than 31 or less
than 1, or the value of addr_count is less than 1.
EXAMPLES
Example 1 Print physical pages and page sizes corresponding to a set of virtual addresses. The following example prints the physical pages and page sizes corresponding to a set of virtual addresses.SunOS 5.11 Last change: 21 Feb 2003 2
System Calls meminfo(2)
voidprint_info(void **addrvec, int how_many)
{static const uint_t info[] = {
MEMINFO_VPHYSICAL,
MEMINFO_VPAGESIZE
};int info_num = sizeof (info) / sizeof (info[0]);
int i;uint64_t *inaddr = alloca(sizeof (uint64_t) * how_many);
uint64_t *outdata = alloca(sizeof (uint64_t) * how_many * info_num);
uint_t *validity = alloca(sizeof (uint_t) * how_many);
for (i = 0; i < how_many; i++)
inaddr[i] = (uint64_t)addrvec[i];
if (meminfo(inaddr, how_many, info, info_num, outdata,
validity) < 0) {perror("meminfo");
return; }for (i = 0; i < how_many; i++) {
if ((validity[i] & 1) == 0)printf("address 0x%llx not part of address space\n",
inaddr[i]); else if ((validity[i] & 2) == 0)printf("address 0x%llx has no physical page "
"associated with it\n", inaddr[i]); else { char buff[80]; if ((validity[i] & 4) == 0) strcpy(buff, ""); else sprintf(buff, "%lld",
outdata[i * info_num + 1]);
printf("address 0x%llx is backed by physical "
"page 0x%llx of size %s\n",
inaddr[i], outdata[i * info_num], buff);
} } }ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:SunOS 5.11 Last change: 21 Feb 2003 3
System Calls meminfo(2)
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Committed ||_____________________________|_____________________________|
| MT-Level | Async-Signal-Safe |
|_____________________________|_____________________________|
SEE ALSO
memcntl(2), mmap(2), gethomelgroup(3C), getpagesize(3C), madvise(3C), sysconf(3C), attributes(5)SunOS 5.11 Last change: 21 Feb 2003 4