* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
- * $Id$ */
+ */
#include <sys/dkstat.h>
#include <sys/param.h>
void update_top()
{
+ kvm_init();
proc_find_top(info.cpu, info.memu);
}
}
#endif
+void clear_diskio_stats()
+{
+}
+
void update_diskio()
{
return; /* XXX: implement? hifi: not sure how */
struct process *processes;
int mib[2];
- int total_pages;
+ u_int total_pages;
+ int64_t usermem;
int pagesize = getpagesize();
/* we get total pages count again to be sure it is up to date */
mib[0] = CTL_HW;
- mib[1] = HW_USERMEM;
- size_t size = sizeof(total_pages);
+ mib[1] = HW_USERMEM64;
+ size_t size = sizeof(usermem);
- if (sysctl(mib, 2, &total_pages, &size, NULL, 0) == -1) {
- ERR("error reading nmempages");
+ if (sysctl(mib, 2, &usermem, &size, NULL, 0) == -1) {
+ ERR("error reading usermem");
}
+ /* translate bytes into page count */
+ total_pages = usermem / pagesize;
+
int max_size = sizeof(struct kinfo_proc2);
p = kvm_getproc2(kd, KERN_PROC_ALL, 0, max_size, &n_processes);
processes[j].pid = p[i].p_pid;
processes[j].name = strndup(p[i].p_comm, text_buffer_size);
processes[j].amount = 100.0 * p[i].p_pctcpu / FSCALE;
- processes[j].totalmem = (float) (p[i].p_vm_rssize * pagesize /
- (float) total_pages) * 100.0;
+ processes[j].totalmem = (float) (p[i].p_vm_rssize /
+ (float) total_pages) * 100.0;
j++;
}
}