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:
@@ -55,7 +55,7 @@ struct _glibtop_machine
|
||||
kstat_t *syspages; /* 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() */
|
||||
unsigned long long boot; /* boot time, it's ui32 in kstat */
|
||||
};
|
||||
|
@@ -59,7 +59,7 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
|
||||
|
||||
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;
|
||||
|
||||
if(!kc)
|
||||
@@ -77,18 +77,18 @@ glibtop_get_mem_s (glibtop *server, glibtop_mem *buf)
|
||||
if(kn)
|
||||
{
|
||||
#ifdef _LP64
|
||||
buf->free = kn->value.ui64 * pagesize;
|
||||
buf->free = kn->value.ui64 << pagesize;
|
||||
#else
|
||||
buf->free = kn->value.ui32 * pagesize;
|
||||
buf->free = kn->value.ui32 << pagesize;
|
||||
#endif
|
||||
buf->used = buf->total - buf->free;
|
||||
}
|
||||
kn = (kstat_named_t *)kstat_data_lookup(ksp, "pageslocked");
|
||||
if(kn)
|
||||
#ifdef _LP64
|
||||
buf->locked = kn->value.ui64 * pagesize;
|
||||
buf->locked = kn->value.ui64 << pagesize;
|
||||
#else
|
||||
buf->locked = kn->value.ui32 * pagesize;
|
||||
buf->locked = kn->value.ui32 << pagesize;
|
||||
#endif
|
||||
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");
|
||||
if(kn)
|
||||
#ifdef _LP64
|
||||
buf->user = kn->value.ui64 * pagesize;
|
||||
buf->user = kn->value.ui64 << pagesize;
|
||||
#else
|
||||
buf->user = kn->value.ui32 * pagesize;
|
||||
buf->user = kn->value.ui32 << pagesize;
|
||||
#endif
|
||||
kn = (kstat_named_t *)kstat_data_lookup(ksp, "pages_exec");
|
||||
if(kn)
|
||||
#ifdef _LP64
|
||||
buf->shared = kn->value.ui64 * pagesize;
|
||||
buf->shared = kn->value.ui64 << pagesize;
|
||||
#else
|
||||
buf->shared = kn->value.ui32 * pagesize;
|
||||
buf->shared = kn->value.ui32 << pagesize;
|
||||
#endif
|
||||
kn = (kstat_named_t *)kstat_data_lookup(ksp, "pages_vnode");
|
||||
if(kn)
|
||||
#ifdef _LP64
|
||||
buf->buffer = kn->value.ui64 * pagesize;
|
||||
buf->buffer = kn->value.ui64 << pagesize;
|
||||
#else
|
||||
buf->buffer = kn->value.ui32 * pagesize;
|
||||
buf->buffer = kn->value.ui32 << pagesize;
|
||||
#endif
|
||||
buf->flags += _glibtop_sysdeps_mem_bunyip;
|
||||
}
|
||||
|
@@ -130,10 +130,13 @@ glibtop_open_s (glibtop *server, const char *program_name,
|
||||
kstat_ctl_t *kc;
|
||||
kstat_t *ksp;
|
||||
kstat_named_t *kn;
|
||||
int i, page;
|
||||
|
||||
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.kc = kc = kstat_open ();
|
||||
|
||||
|
@@ -42,6 +42,7 @@ void
|
||||
glibtop_get_proc_mem_s (glibtop *server, glibtop_proc_mem *buf,
|
||||
pid_t pid)
|
||||
{
|
||||
int pagesize = server->machine.pagesize;
|
||||
struct psinfo psinfo;
|
||||
|
||||
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))
|
||||
return;
|
||||
|
||||
buf->size = buf->vsize = psinfo.pr_size;
|
||||
buf->resident = buf->rss = psinfo.pr_rssize;
|
||||
buf->size = buf->vsize = psinfo.pr_size >> pagesize;
|
||||
buf->resident = buf->rss = psinfo.pr_rssize >> pagesize;
|
||||
|
||||
buf->flags = _glibtop_sysdeps_proc_mem;
|
||||
}
|
||||
|
Reference in New Issue
Block a user