$OpenBSD: patch-process_sysdep_OPENBSD_c,v 1.5 2011/06/26 10:29:11 sthen Exp $
--- process/sysdep_OPENBSD.c.orig	Sun Jul 29 21:23:26 2007
+++ process/sysdep_OPENBSD.c	Sun Jun 26 11:03:00 2011
@@ -90,6 +90,7 @@ static long cpu_syst_old = 0;
 int init_process_info_sysdep(void) {
   int              mib[2];
   size_t           len;
+  int64_t          physmem;
   struct clockinfo clock;
 
   mib[0] = CTL_KERN;
@@ -112,14 +113,14 @@ int init_process_info_sysdep(void) {
     return FALSE;
   }
 
-  mib[1] = HW_PHYSMEM;
-  len    = sizeof(systeminfo.mem_kbyte_max);
-  if(sysctl(mib, 2, &systeminfo.mem_kbyte_max, &len, NULL, 0) == -1)
+  mib[1] = HW_PHYSMEM64;
+  len    = sizeof(physmem);
+  if(sysctl(mib, 2, &physmem, &len, NULL, 0) == -1)
   {
     DEBUG("system statistic error -- cannot get real memory amount: %s\n", STRERROR);
     return FALSE;
   }
-  systeminfo.mem_kbyte_max /= 1024;
+  systeminfo.mem_kbyte_max = physmem / 1024;
 
   mib[1] = HW_PAGESIZE;
   len    = sizeof(pagesize_kbyte);
@@ -157,7 +158,7 @@ int initprocesstree_sysdep(ProcessTree_T ** reference)
     return FALSE;
   }
 
-  pinfo = kvm_getprocs(kvm_handle, KERN_PROC_ALL, 0, &treesize);
+  pinfo = kvm_getprocs(kvm_handle, KERN_PROC_ALL, 0, sizeof(struct kinfo_proc), &treesize);
   if(!pinfo || (treesize < 1))
   {
     LogError("system statistic error -- cannot get process tree\n");
@@ -169,13 +170,13 @@ int initprocesstree_sysdep(ProcessTree_T ** reference)
 
   for(i = 0; i < treesize; i++)
   {
-    pt[i].pid       = pinfo[i].kp_proc.p_pid;
-    pt[i].ppid      = pinfo[i].kp_eproc.e_ppid;
-    pt[i].cputime   = (long)((pinfo[i].kp_proc.p_rtime.tv_sec * 10) +
-                             (pinfo[i].kp_proc.p_rtime.tv_usec / 100000)
+    pt[i].pid       = pinfo[i].p_pid;
+    pt[i].ppid      = pinfo[i].p_ppid;
+    pt[i].cputime   = (long)((pinfo[i].p_rtime_sec * 10) +
+                             (pinfo[i].p_rtime_usec / 100000)
                             );
-    pt[i].mem_kbyte = (unsigned long)(pinfo[i].kp_eproc.e_vm.vm_rssize * pagesize_kbyte);
-    if(pinfo[i].kp_proc.p_stat == SZOMB)
+    pt[i].mem_kbyte = (unsigned long)(pinfo[i].p_vm_rssize * pagesize_kbyte);
+    if(pinfo[i].p_stat == SZOMB)
     {
       pt[i].status_flag |= PROCESS_ZOMBIE;
     }
