Merge branch 'jk/pstat_getfile2'
This commit is contained in:
commit
81a19487a9
|
@ -16,6 +16,10 @@
|
||||||
* USA.
|
* USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "sigar.h"
|
#include "sigar.h"
|
||||||
#include "sigar_private.h"
|
#include "sigar_private.h"
|
||||||
#include "sigar_util.h"
|
#include "sigar_util.h"
|
||||||
|
@ -416,7 +420,11 @@ int sigar_proc_fd_get(sigar_t *sigar, sigar_pid_t pid,
|
||||||
{
|
{
|
||||||
struct pst_status status;
|
struct pst_status status;
|
||||||
int idx, i, n;
|
int idx, i, n;
|
||||||
|
#ifdef HAVE_STRUCT_PST_FILEINFO2
|
||||||
|
struct pst_fileinfo2 psf[16];
|
||||||
|
#else
|
||||||
struct pst_fileinfo psf[16];
|
struct pst_fileinfo psf[16];
|
||||||
|
#endif
|
||||||
|
|
||||||
procfd->total = 0;
|
procfd->total = 0;
|
||||||
|
|
||||||
|
@ -424,6 +432,18 @@ int sigar_proc_fd_get(sigar_t *sigar, sigar_pid_t pid,
|
||||||
return errno;
|
return errno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* HPUX 11.31 removed the deprecated pstat_getfile call */
|
||||||
|
#ifdef HAVE_STRUCT_PST_FILEINFO2
|
||||||
|
idx = status.pst_idx;
|
||||||
|
|
||||||
|
while ((n = pstat_getfile2(psf, sizeof(psf[0]),
|
||||||
|
sizeof(psf)/sizeof(psf[0]),
|
||||||
|
idx, pid)) > 0)
|
||||||
|
{
|
||||||
|
procfd->total += n;
|
||||||
|
idx = psf[n-1].psf_fd;
|
||||||
|
}
|
||||||
|
#else
|
||||||
/* man pstat_getfile for index splaination */
|
/* man pstat_getfile for index splaination */
|
||||||
idx = (status.pst_idx << 16) | (0 & 0xffff);
|
idx = (status.pst_idx << 16) | (0 & 0xffff);
|
||||||
|
|
||||||
|
@ -434,6 +454,7 @@ int sigar_proc_fd_get(sigar_t *sigar, sigar_pid_t pid,
|
||||||
procfd->total += n;
|
procfd->total += n;
|
||||||
idx = psf[n-1].psf_idx + 1;
|
idx = psf[n-1].psf_idx + 1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (n == -1) {
|
if (n == -1) {
|
||||||
return errno;
|
return errno;
|
||||||
|
|
Loading…
Reference in New Issue