patch-psinfo_c 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. $OpenBSD: patch-psinfo_c,v 1.2 2011/07/06 12:50:15 jasper Exp $
  2. Adapt to new OpenBSD kinfo_proc API.
  3. --- psinfo.c.orig Sun Mar 15 03:15:49 2009
  4. +++ psinfo.c Wed Jul 6 14:41:49 2011
  5. @@ -90,7 +90,11 @@ char *getProcessNameByProcessID(int pid)
  6. {
  7. int found;
  8. kvm_t *kd;
  9. +#if defined(__OpenBSD__)
  10. struct kinfo_proc *givenproc;
  11. +#else
  12. + struct kinfo_procs *givenproc;
  13. +#endif
  14. /* get kvm_t descriptor on /dev/mem */
  15. @@ -103,7 +107,11 @@ char *getProcessNameByProcessID(int pid)
  16. * get kinfo_proc structure from kernel for our pid.
  17. * Since pids are had better be unique, we should only get one.
  18. */
  19. +#if defined(__OpenBSD__)
  20. + givenproc = kvm_getprocs(kd, KERN_PROC_PID, pid, sizeof(struct kinfo_proc), &found);
  21. +#else
  22. givenproc = kvm_getprocs(kd, KERN_PROC_PID, pid, &found);
  23. +#endif
  24. switch (found) {
  25. case 0:
  26. @@ -117,6 +125,8 @@ char *getProcessNameByProcessID(int pid)
  27. name = xstrdup(givenproc->ki_comm);
  28. #elif defined(__DragonFly_version)
  29. name = xstrdup(givenproc->kp_comm);
  30. + #elif defined(__OpenBSD__)
  31. + name = xstrdup(givenproc->p_comm);
  32. # else
  33. name = xstrdup(givenproc->kp_proc.p_comm);
  34. #endif /* __FreeBSD__ */
  35. @@ -249,10 +259,8 @@ float getProcessCPUPercentByProcessID(int pid)
  36. }
  37. #elif defined(USE_KVM)
  38. {
  39. - #if defined(__FreeBSD__) || defined(__DragonFly_version)
  40. struct kinfo_proc *givenproc;
  41. - #else
  42. - struct kinfo_proc2 *givenproc;
  43. + #if !defined(__FreeBSD__) && !defined(__DragonFly_version)
  44. struct nlist readnl[] = {{"_fscale"}, {NULL}};
  45. #endif /* __FreeBSD__ or __DragonFly_version */
  46. kvm_t *kd;
  47. @@ -294,7 +302,7 @@ float getProcessCPUPercentByProcessID(int pid)
  48. #if defined(__FreeBSD__) || defined(__DragonFly_version)
  49. givenproc = kvm_getprocs(kd, KERN_PROC_PID, pid, &found);
  50. #else
  51. - givenproc = kvm_getproc2(kd, KERN_PROC_PID, pid, sizeof(struct kinfo_proc2), &found);
  52. + givenproc = kvm_getprocs(kd, KERN_PROC_PID, pid, sizeof(struct kinfo_proc), &found);
  53. #endif /* __FreeBSD__ or __DragonFly_version */
  54. switch (found) {