File tree 1 file changed +44
-0
lines changed 1 file changed +44
-0
lines changed Original file line number Diff line number Diff line change @@ -475,6 +475,50 @@ v8::Handle<v8::Value> Exit(const v8::Arguments& args) {
475
475
return Undefined ();
476
476
}
477
477
478
+ #ifdef __sun
479
+ #define HAVE_GETMEM 1
480
+ #include < unistd.h> /* getpagesize() */
481
+
482
+ #if (!defined(_LP64)) && (_FILE_OFFSET_BITS - 0 == 64)
483
+ #define PROCFS_FILE_OFFSET_BITS_HACK 1
484
+ #undef _FILE_OFFSET_BITS
485
+ #else
486
+ #define PROCFS_FILE_OFFSET_BITS_HACK 0
487
+ #endif
488
+
489
+ #include < procfs.h>
490
+
491
+ #if (PROCFS_FILE_OFFSET_BITS_HACK - 0 == 1)
492
+ #define _FILE_OFFSET_BITS 64
493
+ #endif
494
+
495
+ int getmem (size_t *rss, size_t *vsize) {
496
+ pid_t pid = getpid ();
497
+
498
+ size_t page_size = getpagesize ();
499
+ char pidpath[1024 ];
500
+ sprintf (pidpath, " /proc/%d/psinfo" , pid);
501
+
502
+ psinfo_t psinfo;
503
+ FILE *f = fopen (pidpath, " r" );
504
+ if (!f) return -1 ;
505
+
506
+ if (fread (&psinfo, sizeof (psinfo_t ), 1 , f) != 1 ) {
507
+ fclose (f);
508
+ return -1 ;
509
+ }
510
+
511
+ /* XXX correct? */
512
+
513
+ *vsize = (size_t ) psinfo.pr_size * page_size;
514
+ *rss = (size_t ) psinfo.pr_rssize * 1024 ;
515
+
516
+ fclose (f);
517
+
518
+ return 0 ;
519
+ }
520
+ #endif
521
+
478
522
479
523
#ifdef __FreeBSD__
480
524
#define HAVE_GETMEM 1
You can’t perform that action at this time.
0 commit comments