kinfo_getvmmap —
    function for getting per-process memory map
    information
System Utilities Library (libutil,
  -lutil)
This function is used for obtaining virtual memory mapping
    information of a particular process.
The pid field contains the process
    identifier. This should be the a process that you have privilege to access.
    The cntp field is allows the caller to know how many
    records are returned.
This function is a wrapper around
    sysctl(3)
    with the KERN_PROC_VMMAP mib. While the kernel
    returns a packed structure, this function expands the data into a fixed
    record format.
On success the kinfo_getvmmap() function
    returns a pointer to an array of struct kinfo_vmentry
    structures as defined by
    <sys/user.h>. The array was
    obtained by an internal call to
    malloc(3)
    and must be freed by the caller with a call to
    free(3).
    On failure the kinfo_getvmmap() function returns
    NULL.
The kinfo_getvmmap() function first
    appeared in FreeBSD 7.0.
kinfo_getvmmap() calls can cause
    significant CPU consumption because calculating the residency counts
    requires iterating over all memory pages of the process. Setting the sysctl
    variable kern.proc_vmmap_skip_resident_count to 1
    prevents this calculation.