100 |
{ |
{ |
101 |
quad_t totusec; |
quad_t totusec; |
102 |
u_quad_t u, st, ut, it, tot; |
u_quad_t u, st, ut, it, tot; |
103 |
#if (__FreeBSD_version < 300003) || (__FreeBSD_version > 500000) |
#if (__FreeBSD_version < 300003) || (__FreeBSD_version >= 500000) |
104 |
long sec, usec; |
long sec, usec; |
105 |
#endif |
#endif |
106 |
|
|
114 |
st = 1; |
st = 1; |
115 |
tot = 1; |
tot = 1; |
116 |
} |
} |
117 |
|
|
118 |
|
#if (__FreeBSD_version >= 500000) |
119 |
|
sec = p->p_runtime.sec; |
120 |
|
usec = p->p_runtime.frac; |
121 |
|
|
122 |
|
totusec = (quad_t)sec * 1000000 + usec; |
123 |
|
#endif |
124 |
|
|
125 |
#if (__FreeBSD_version >= 300003) && (__FreeBSD_version < 500000) |
#if (__FreeBSD_version >= 300003) && (__FreeBSD_version < 500000) |
126 |
totusec = (u_quad_t) p->p_runtime; |
totusec = (u_quad_t) p->p_runtime; |
127 |
#else |
#endif |
128 |
|
|
129 |
|
#if (__FreeBSD_version < 300003) |
130 |
sec = p->p_rtime.tv_usec; |
sec = p->p_rtime.tv_usec; |
131 |
usec = p->p_rtime.tv_usec; |
usec = p->p_rtime.tv_usec; |
132 |
|
|
259 |
/* ----------------------------- CPU TIMING ----------------------------*/ |
/* ----------------------------- CPU TIMING ----------------------------*/ |
260 |
/* Got it from libgtop/sysdep/freebsd/proctime.c */ |
/* Got it from libgtop/sysdep/freebsd/proctime.c */ |
261 |
|
|
262 |
|
|
263 |
if (kvm_read (kvm_handle, |
if (kvm_read (kvm_handle, |
264 |
|
#if (__FreeBSD_version > 500000) |
265 |
|
(unsigned long) &pinfo->ki_addr->u_stats, |
266 |
|
#else |
267 |
(unsigned long) pinfo [0].kp_proc.p_stats, |
(unsigned long) pinfo [0].kp_proc.p_stats, |
268 |
|
#endif |
269 |
&pstats, sizeof (pstats)) == sizeof (pstats)) { |
&pstats, sizeof (pstats)) == sizeof (pstats)) { |
270 |
|
|
271 |
/* Need to fix for different versions of BSD - I think older ones |
/* Need to fix for different versions of BSD - I think older ones |
277 |
(char *) &pstats, sizeof (pstats)) == sizeof (pstats)) { |
(char *) &pstats, sizeof (pstats)) == sizeof (pstats)) { |
278 |
*/ |
*/ |
279 |
rup = &pstats.p_ru; |
rup = &pstats.p_ru; |
280 |
|
#if (__FreeBSD_version > 500000) |
281 |
|
calcru(&pinfo->ki_addr, |
282 |
|
#else |
283 |
calcru(&(pinfo [0]).kp_proc, |
calcru(&(pinfo [0]).kp_proc, |
284 |
|
#endif |
285 |
&rup->ru_utime, &rup->ru_stime, NULL); |
&rup->ru_utime, &rup->ru_stime, NULL); |
286 |
|
|
287 |
stat_utime = tv2sec (pstats.p_ru.ru_utime); |
stat_utime = tv2sec (pstats.p_ru.ru_utime); |
317 |
/* Got it from libgtop/sysdep/freebsd/procmem.c */ |
/* Got it from libgtop/sysdep/freebsd/procmem.c */ |
318 |
|
|
319 |
if (kvm_read (kvm_handle, |
if (kvm_read (kvm_handle, |
320 |
|
#if (__FreeBSD_version > 500000) |
321 |
|
(unsigned long) &pinfo->ki_addr->p_limit, |
322 |
|
#else |
323 |
(unsigned long) pinfo [0].kp_proc.p_limit, |
(unsigned long) pinfo [0].kp_proc.p_limit, |
324 |
|
#endif |
325 |
(char *) &plimit, sizeof (plimit)) != sizeof (plimit)) { |
(char *) &plimit, sizeof (plimit)) != sizeof (plimit)) { |
326 |
|
|
327 |
return FALSE; |
return FALSE; |