From fd2ddf8b5005a2cc43a7998a4dfc218dcc2e70c4 Mon Sep 17 00:00:00 2001 From: Drazen Kacar Date: Mon, 3 May 1999 00:05:38 +0000 Subject: [PATCH] Forgot to commit the file. There's probably more of them arround. --- sysdeps/solaris/procdata.c | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/sysdeps/solaris/procdata.c b/sysdeps/solaris/procdata.c index 7fb8febb..e55f1c74 100644 --- a/sysdeps/solaris/procdata.c +++ b/sysdeps/solaris/procdata.c @@ -24,6 +24,8 @@ #include #include +#include + /* Read /proc//psinfo. */ int @@ -41,7 +43,7 @@ glibtop_get_proc_data_psinfo_s (glibtop *server, struct psinfo *psinfo, pid_t pi if (pread (fd, psinfo, sizeof (struct psinfo), 0) != sizeof (struct psinfo)) { close (fd); - glibtop_warn_io_r (server, "read (%s)", buffer); + glibtop_warn_io_r (server, "pread (%s)", buffer); return -1; } @@ -64,7 +66,7 @@ glibtop_get_proc_data_usage_s (glibtop *server, struct prusage *prusage, pid_t p if (pread (fd, prusage, sizeof (struct prusage), 0) != sizeof (struct prusage)) { close (fd); - glibtop_warn_io_r (server, "read (%s)", buffer); + glibtop_warn_io_r (server, "pread (%s)", buffer); return -1; } @@ -78,17 +80,40 @@ glibtop_get_proc_credentials_s(glibtop *server, struct prcred *prcred, pid_t pid int fd; char buffer[BUFSIZ]; - sprintf(buffer, "/proc/%d/prcred", (int)pid); + sprintf(buffer, "/proc/%d/cred", (int)pid); if((fd = open(buffer, O_RDONLY)) < 0) { - if(errno != EPERM) + if(errno != EPERM && errno != EACCES) glibtop_warn_io_r(server, "open (%s)", buffer); return -1; } if(pread(fd, prcred, sizeof(struct prcred), 0) != sizeof(struct prcred)) { close(fd); - glibtop_warn_io_r(server, "read (%s)", buffer); + glibtop_warn_io_r(server, "pread (%s)", buffer); + return -1; + } + close(fd); + return 0; +} + +int +glibtop_get_proc_status_s(glibtop *server, struct pstatus *pstatus, pid_t pid) +{ + int fd; + char buffer[BUFSIZ]; + + sprintf(buffer, "/proc/%d/status", (int)pid); + if((fd = open(buffer, O_RDONLY)) < 0) + { + if(errno != EPERM && errno != EACCES) + glibtop_warn_io_r(server, "open (%s)", buffer); + return -1; + } + if(pread(fd, pstatus, sizeof(struct pstatus), 0) != sizeof(struct prcred)) + { + close(fd); + glibtop_warn_io_r(server, "pread (%s)", buffer); return -1; } close(fd);