Permalink
Browse files

getmem() for solaris

  • Loading branch information...
1 parent faefb3f commit f88d39de7416431db590f5e3034cc5ce81e6bc67 @ry ry committed Jan 20, 2010
Showing with 44 additions and 0 deletions.
  1. +44 −0 src/node.cc
View
@@ -475,6 +475,50 @@ v8::Handle<v8::Value> Exit(const v8::Arguments& args) {
return Undefined();
}
+#ifdef __sun
+#define HAVE_GETMEM 1
+#include <unistd.h> /* getpagesize() */
+
+#if (!defined(_LP64)) && (_FILE_OFFSET_BITS - 0 == 64)
+#define PROCFS_FILE_OFFSET_BITS_HACK 1
+#undef _FILE_OFFSET_BITS
+#else
+#define PROCFS_FILE_OFFSET_BITS_HACK 0
+#endif
+
+#include <procfs.h>
+
+#if (PROCFS_FILE_OFFSET_BITS_HACK - 0 == 1)
+#define _FILE_OFFSET_BITS 64
+#endif
+
+int getmem(size_t *rss, size_t *vsize) {
+ pid_t pid = getpid();
+
+ size_t page_size = getpagesize();
+ char pidpath[1024];
+ sprintf(pidpath, "/proc/%d/psinfo", pid);
+
+ psinfo_t psinfo;
+ FILE *f = fopen(pidpath, "r");
+ if (!f) return -1;
+
+ if (fread(&psinfo, sizeof(psinfo_t), 1, f) != 1) {
+ fclose (f);
+ return -1;
+ }
+
+ /* XXX correct? */
+
+ *vsize = (size_t) psinfo.pr_size * page_size;
+ *rss = (size_t) psinfo.pr_rssize * 1024;
+
+ fclose (f);
+
+ return 0;
+}
+#endif
+
#ifdef __FreeBSD__
#define HAVE_GETMEM 1

0 comments on commit f88d39d

Please sign in to comment.