machine.pagesize is now number of bits we need for shifting, ie.

* glibtop_machine.h, open.c, mem.c, procmem.c: machine.pagesize
        is now number of bits we need for shifting, ie. 2^pagesize
        will give pagesize in Kb.
This commit is contained in:
Drazen Kacar
1999-05-07 23:13:46 +00:00
parent 507766bff6
commit 437c7585cc
4 changed files with 19 additions and 15 deletions

View File

@@ -55,7 +55,7 @@ struct _glibtop_machine
kstat_t *syspages; /* memory usage */ kstat_t *syspages; /* memory usage */
kstat_t *bunyip; /* more memory usage */ kstat_t *bunyip; /* more memory usage */
int pagesize; /* in kilobytes */ int pagesize; /* in bits to shift, ie. 2^pagesize gives Kb */
int ticks; /* clock ticks, as returned by sysconf() */ int ticks; /* clock ticks, as returned by sysconf() */
unsigned long long boot; /* boot time, it's ui32 in kstat */ unsigned long long boot; /* boot time, it's ui32 in kstat */
}; };

View File

@@ -59,7 +59,7 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
memset (buf, 0, sizeof (glibtop_mem)); memset (buf, 0, sizeof (glibtop_mem));
buf->total = (u_int64_t)sysconf(_SC_PHYS_PAGES) * pagesize; buf->total = (u_int64_t)sysconf(_SC_PHYS_PAGES) << pagesize;
buf->flags = _glibtop_sysdeps_mem_os_sysconf; buf->flags = _glibtop_sysdeps_mem_os_sysconf;
if(!kc) if(!kc)
@@ -77,18 +77,18 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
if(kn) if(kn)
{ {
#ifdef _LP64 #ifdef _LP64
buf->free = kn->value.ui64 * pagesize; buf->free = kn->value.ui64 << pagesize;
#else #else
buf->free = kn->value.ui32 * pagesize; buf->free = kn->value.ui32 << pagesize;
#endif #endif
buf->used = buf->total - buf->free; buf->used = buf->total - buf->free;
} }
kn = (kstat_named_t *)kstat_data_lookup(ksp, "pageslocked"); kn = (kstat_named_t *)kstat_data_lookup(ksp, "pageslocked");
if(kn) if(kn)
#ifdef _LP64 #ifdef _LP64
buf->locked = kn->value.ui64 * pagesize; buf->locked = kn->value.ui64 << pagesize;
#else #else
buf->locked = kn->value.ui32 * pagesize; buf->locked = kn->value.ui32 << pagesize;
#endif #endif
buf->flags += _glibtop_sysdeps_mem_os_kstat; buf->flags += _glibtop_sysdeps_mem_os_kstat;
} }
@@ -100,23 +100,23 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
kn = (kstat_named_t *)kstat_data_lookup(ksp, "pages_anon"); kn = (kstat_named_t *)kstat_data_lookup(ksp, "pages_anon");
if(kn) if(kn)
#ifdef _LP64 #ifdef _LP64
buf->user = kn->value.ui64 * pagesize; buf->user = kn->value.ui64 << pagesize;
#else #else
buf->user = kn->value.ui32 * pagesize; buf->user = kn->value.ui32 << pagesize;
#endif #endif
kn = (kstat_named_t *)kstat_data_lookup(ksp, "pages_exec"); kn = (kstat_named_t *)kstat_data_lookup(ksp, "pages_exec");
if(kn) if(kn)
#ifdef _LP64 #ifdef _LP64
buf->shared = kn->value.ui64 * pagesize; buf->shared = kn->value.ui64 << pagesize;
#else #else
buf->shared = kn->value.ui32 * pagesize; buf->shared = kn->value.ui32 << pagesize;
#endif #endif
kn = (kstat_named_t *)kstat_data_lookup(ksp, "pages_vnode"); kn = (kstat_named_t *)kstat_data_lookup(ksp, "pages_vnode");
if(kn) if(kn)
#ifdef _LP64 #ifdef _LP64
buf->buffer = kn->value.ui64 * pagesize; buf->buffer = kn->value.ui64 << pagesize;
#else #else
buf->buffer = kn->value.ui32 * pagesize; buf->buffer = kn->value.ui32 << pagesize;
#endif #endif
buf->flags += _glibtop_sysdeps_mem_bunyip; buf->flags += _glibtop_sysdeps_mem_bunyip;
} }

View File

@@ -130,10 +130,13 @@ glibtop_open_s (glibtop *server, const char *program_name,
kstat_ctl_t *kc; kstat_ctl_t *kc;
kstat_t *ksp; kstat_t *ksp;
kstat_named_t *kn; kstat_named_t *kn;
int i, page;
server->name = program_name; server->name = program_name;
server->machine.pagesize = sysconf(_SC_PAGESIZE) >> 10; page = sysconf(_SC_PAGESIZE) >> 10;
for(i = 0; page; ++i, page >>= 1);
server->machine.pagesize = i;
server->machine.ticks = sysconf(_SC_CLK_TCK); server->machine.ticks = sysconf(_SC_CLK_TCK);
server->machine.kc = kc = kstat_open (); server->machine.kc = kc = kstat_open ();

View File

@@ -42,6 +42,7 @@ void
glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf, glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf,
pid_t pid) pid_t pid)
{ {
int pagesize = server->machine.pagesize;
struct psinfo psinfo; struct psinfo psinfo;
memset (buf, 0, sizeof (glibtop_proc_mem)); memset (buf, 0, sizeof (glibtop_proc_mem));
@@ -49,8 +50,8 @@ glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf,
if(glibtop_get_proc_data_psinfo_s(server, &psinfo, pid)) if(glibtop_get_proc_data_psinfo_s(server, &psinfo, pid))
return; return;
buf->size = buf->vsize = psinfo.pr_size; buf->size = buf->vsize = psinfo.pr_size >> pagesize;
buf->resident = buf->rss = psinfo.pr_rssize; buf->resident = buf->rss = psinfo.pr_rssize >> pagesize;
buf->flags = _glibtop_sysdeps_proc_mem; buf->flags = _glibtop_sysdeps_proc_mem;
} }