diff options
Diffstat (limited to 'ext/-test-/memory_status')
| -rw-r--r-- | ext/-test-/memory_status/depend | 7 | ||||
| -rw-r--r-- | ext/-test-/memory_status/memory_status.c | 31 |
2 files changed, 24 insertions, 14 deletions
diff --git a/ext/-test-/memory_status/depend b/ext/-test-/memory_status/depend index 96a7821451..4dd503e1bb 100644 --- a/ext/-test-/memory_status/depend +++ b/ext/-test-/memory_status/depend @@ -7,7 +7,6 @@ memory_status.o: $(hdrdir)/ruby/backward.h memory_status.o: $(hdrdir)/ruby/backward/2/assume.h memory_status.o: $(hdrdir)/ruby/backward/2/attributes.h memory_status.o: $(hdrdir)/ruby/backward/2/bool.h -memory_status.o: $(hdrdir)/ruby/backward/2/gcc_version_since.h memory_status.o: $(hdrdir)/ruby/backward/2/inttypes.h memory_status.o: $(hdrdir)/ruby/backward/2/limits.h memory_status.o: $(hdrdir)/ruby/backward/2/long_long.h @@ -15,6 +14,7 @@ memory_status.o: $(hdrdir)/ruby/backward/2/stdalign.h memory_status.o: $(hdrdir)/ruby/backward/2/stdarg.h memory_status.o: $(hdrdir)/ruby/defines.h memory_status.o: $(hdrdir)/ruby/intern.h +memory_status.o: $(hdrdir)/ruby/internal/abi.h memory_status.o: $(hdrdir)/ruby/internal/anyargs.h memory_status.o: $(hdrdir)/ruby/internal/arithmetic.h memory_status.o: $(hdrdir)/ruby/internal/arithmetic/char.h @@ -52,6 +52,7 @@ memory_status.o: $(hdrdir)/ruby/internal/attr/noexcept.h memory_status.o: $(hdrdir)/ruby/internal/attr/noinline.h memory_status.o: $(hdrdir)/ruby/internal/attr/nonnull.h memory_status.o: $(hdrdir)/ruby/internal/attr/noreturn.h +memory_status.o: $(hdrdir)/ruby/internal/attr/packed_struct.h memory_status.o: $(hdrdir)/ruby/internal/attr/pure.h memory_status.o: $(hdrdir)/ruby/internal/attr/restrict.h memory_status.o: $(hdrdir)/ruby/internal/attr/returns_nonnull.h @@ -111,7 +112,6 @@ memory_status.o: $(hdrdir)/ruby/internal/intern/enumerator.h memory_status.o: $(hdrdir)/ruby/internal/intern/error.h memory_status.o: $(hdrdir)/ruby/internal/intern/eval.h memory_status.o: $(hdrdir)/ruby/internal/intern/file.h -memory_status.o: $(hdrdir)/ruby/internal/intern/gc.h memory_status.o: $(hdrdir)/ruby/internal/intern/hash.h memory_status.o: $(hdrdir)/ruby/internal/intern/io.h memory_status.o: $(hdrdir)/ruby/internal/intern/load.h @@ -142,14 +142,13 @@ memory_status.o: $(hdrdir)/ruby/internal/memory.h memory_status.o: $(hdrdir)/ruby/internal/method.h memory_status.o: $(hdrdir)/ruby/internal/module.h memory_status.o: $(hdrdir)/ruby/internal/newobj.h -memory_status.o: $(hdrdir)/ruby/internal/rgengc.h memory_status.o: $(hdrdir)/ruby/internal/scan_args.h memory_status.o: $(hdrdir)/ruby/internal/special_consts.h memory_status.o: $(hdrdir)/ruby/internal/static_assert.h memory_status.o: $(hdrdir)/ruby/internal/stdalign.h memory_status.o: $(hdrdir)/ruby/internal/stdbool.h +memory_status.o: $(hdrdir)/ruby/internal/stdckdint.h memory_status.o: $(hdrdir)/ruby/internal/symbol.h -memory_status.o: $(hdrdir)/ruby/internal/token_paste.h memory_status.o: $(hdrdir)/ruby/internal/value.h memory_status.o: $(hdrdir)/ruby/internal/value_type.h memory_status.o: $(hdrdir)/ruby/internal/variable.h diff --git a/ext/-test-/memory_status/memory_status.c b/ext/-test-/memory_status/memory_status.c index 5775fa56f3..f124c97ca1 100644 --- a/ext/-test-/memory_status/memory_status.c +++ b/ext/-test-/memory_status/memory_status.c @@ -10,11 +10,15 @@ static VALUE cMemoryStatus; +#undef HAVE_RSS +#undef HAVE_PEAK + static VALUE read_status(VALUE self) { VALUE size = INT2FIX(0); #if defined __APPLE__ +# define HAVE_RSS 1 VALUE rss; kern_return_t error; # if defined MACH_TASK_BASIC_INFO @@ -30,7 +34,7 @@ read_status(VALUE self) taskinfo.virtual_size = 0; taskinfo.resident_size = 0; error = task_info(mach_task_self(), flavor, - (task_info_t)&taskinfo, &out_count); + (task_info_t)&taskinfo, &out_count); if (error != KERN_SUCCESS) return Qnil; #ifndef ULL2NUM /* "long long" does not exist here, use size_t instead. */ @@ -40,14 +44,20 @@ read_status(VALUE self) rss = ULL2NUM(taskinfo.resident_size); rb_struct_aset(self, INT2FIX(1), rss); #elif defined _WIN32 - VALUE peak; +# define HAVE_RSS 1 +# define HAVE_PEAK 1 + VALUE rss, peak; PROCESS_MEMORY_COUNTERS c; c.cb = sizeof(c); if (!GetProcessMemoryInfo(GetCurrentProcess(), &c, c.cb)) - return Qnil; + return Qnil; size = SIZET2NUM(c.PagefileUsage); + rss = SIZET2NUM(c.WorkingSetSize); peak = SIZET2NUM(c.PeakWorkingSetSize); - rb_struct_aset(self, INT2FIX(1), peak); + rb_struct_aset(self, INT2FIX(2), peak); +#endif +#ifdef HAVE_RSS + rb_struct_aset(self, INT2FIX(1), rss); #endif rb_struct_aset(self, INT2FIX(0), size); return self; @@ -58,12 +68,13 @@ Init_memory_status(void) { VALUE mMemory = rb_define_module("Memory"); cMemoryStatus = - rb_struct_define_under(mMemory, "Status", "size", -#if defined __APPLE__ - "rss", -#elif defined _WIN32 - "peak", + rb_struct_define_under(mMemory, "Status", "size", +#ifdef HAVE_RSS + "rss", +#endif +#ifdef HAVE_PEAK + "peak", #endif - (char *)NULL); + (char *)NULL); rb_define_method(cMemoryStatus, "_update", read_status, 0); } |
