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 *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 */
|
||||||
};
|
};
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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 ();
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user