compile with _PSTAT64 on pa-risc too.
if pstat_getproc fails, return errno rather than hard-coded ESRCH
This commit is contained in:
parent
182d078581
commit
65a63c4650
@ -28,6 +28,12 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
|
#ifdef _PSTAT64
|
||||||
|
typedef int64_t pstat_int_t;
|
||||||
|
#else
|
||||||
|
typedef int32_t pstat_int_t;
|
||||||
|
#endif
|
||||||
|
|
||||||
int sigar_os_open(sigar_t **sigar)
|
int sigar_os_open(sigar_t **sigar)
|
||||||
{
|
{
|
||||||
*sigar = malloc(sizeof(**sigar));
|
*sigar = malloc(sizeof(**sigar));
|
||||||
@ -115,7 +121,8 @@ int sigar_swap_get(sigar_t *sigar, sigar_swap_t *swap)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void get_cpu_metrics(sigar_t *sigar,
|
static void get_cpu_metrics(sigar_t *sigar,
|
||||||
sigar_cpu_t *cpu, int32_t *cpu_time)
|
sigar_cpu_t *cpu,
|
||||||
|
pstat_int_t *cpu_time)
|
||||||
{
|
{
|
||||||
cpu->user = SIGAR_TICK2SEC(cpu_time[CP_USER]);
|
cpu->user = SIGAR_TICK2SEC(cpu_time[CP_USER]);
|
||||||
|
|
||||||
@ -259,7 +266,7 @@ static int sigar_pstat_getproc(sigar_t *sigar, sigar_pid_t pid)
|
|||||||
sizeof(*sigar->pinfo),
|
sizeof(*sigar->pinfo),
|
||||||
0, pid) == -1)
|
0, pid) == -1)
|
||||||
{
|
{
|
||||||
return ESRCH;
|
return errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
return SIGAR_OK;
|
return SIGAR_OK;
|
||||||
@ -353,7 +360,9 @@ int sigar_proc_state_get(sigar_t *sigar, sigar_pid_t pid,
|
|||||||
procstate->threads = pinfo->pst_nlwps;
|
procstate->threads = pinfo->pst_nlwps;
|
||||||
procstate->processor = pinfo->pst_procnum;
|
procstate->processor = pinfo->pst_procnum;
|
||||||
|
|
||||||
switch (pinfo->pst_stat) {
|
/* cast to prevent compiler warning: */
|
||||||
|
/* Case label too big for the type of the switch expression */
|
||||||
|
switch ((int32_t)pinfo->pst_stat) {
|
||||||
case PS_SLEEP:
|
case PS_SLEEP:
|
||||||
procstate->state = 'S';
|
procstate->state = 'S';
|
||||||
break;
|
break;
|
||||||
@ -386,7 +395,7 @@ int sigar_proc_args_get(sigar_t *sigar, sigar_pid_t pid,
|
|||||||
struct pst_status status;
|
struct pst_status status;
|
||||||
|
|
||||||
if (pstat_getproc(&status, sizeof(status), 0, pid) == -1) {
|
if (pstat_getproc(&status, sizeof(status), 0, pid) == -1) {
|
||||||
return ESRCH;
|
return errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
args = status.pst_cmd;
|
args = status.pst_cmd;
|
||||||
@ -416,7 +425,7 @@ int sigar_proc_fd_get(sigar_t *sigar, sigar_pid_t pid,
|
|||||||
procfd->total = 0;
|
procfd->total = 0;
|
||||||
|
|
||||||
if (pstat_getproc(&status, sizeof(status), 0, pid) == -1) {
|
if (pstat_getproc(&status, sizeof(status), 0, pid) == -1) {
|
||||||
return ESRCH;
|
return errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* man pstat_getfile for index splaination */
|
/* man pstat_getfile for index splaination */
|
||||||
|
@ -27,9 +27,10 @@
|
|||||||
#ifndef _LP64
|
#ifndef _LP64
|
||||||
#define _LP64
|
#define _LP64
|
||||||
#endif
|
#endif
|
||||||
#define _PSTAT64
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define _PSTAT64
|
||||||
|
|
||||||
#include <sys/pstat.h>
|
#include <sys/pstat.h>
|
||||||
#include <sys/mib.h>
|
#include <sys/mib.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user