17770N/A+unsigned int nrec; /* This is used in getvmusage to get the no of result structures */
17770N/A+char arch[10]; /* This is used in sysinfo to get kernel bitness */
17770N/A+ int vmu_align_next_members_on_8_bytes;
17770N/A- /* Bunyip module provides data in multiples of system page size */
17770N/A- kn = kstat_data_lookup(ksp, "pages_exec");
17770N/A- buf->shared = (KN_VALUE << PAGESHIFT);
17770N/A- buf->flags |= (1 << GLIBTOP_MEM_SHARED);
17770N/A- kn = kstat_data_lookup(ksp, "pages_vnode");
17770N/A- buf->buffer = (KN_VALUE << PAGESHIFT);
17770N/A- buf->flags |= (1 << GLIBTOP_MEM_BUFFER);
17770N/A- kn = kstat_data_lookup(ksp, "pages_anon");
17770N/A- buf->user = (KN_VALUE << PAGESHIFT);
17770N/A- buf->flags |= (1 << GLIBTOP_MEM_USER);
17770N/A- else /* Bunyip is not available, let's compute buf->user the old way */
17770N/A+ vmusage64_t *result = (vmusage64_t*) malloc(sizeof(vmusage64_t));
17770N/A+ if(getvmusage(VMUSAGE_SYSTEM, 5, result, &nrec) != 0)
17770N/A- buf->user = buf->total - buf->free - buf->cached - buf->buffer;
17770N/A- buf->flags |= (1 << GLIBTOP_MEM_USER);
17770N/A+ buf->user = buf->total - buf->free - buf->cached - buf->buffer;
17770N/A+ buf->flags |= (1 << GLIBTOP_MEM_USER);
17770N/A+ if(sysinfo(SI_ARCHITECTURE_64, arch, sizeof(arch)) < 0)
17770N/A+ vmu32 = (vmusage32_t*) result;
17770N/A+ buf->user = vmu32->vmu_rss_all;
17770N/A+ vmu64 = (vmusage64_t*) result;
17770N/A+ buf->user = vmu64->vmu_rss_all;
17770N/A+ buf->flags |= (1 << GLIBTOP_MEM_USER);