Sha256: ebf73741d2b1fa975161c979bc216b42ab84708e4af820e64e0aadfbdd574c8d

Contents?: true

Size: 1.39 KB

Versions: 39

Compression:

Stored size: 1.39 KB

Contents

// VERSION = "x.y.z"
#include <ruby.h>
#include <sys/resource.h>

VALUE v_usage_struct;

static VALUE do_rusage_get(int who){
  struct rusage r;
  int ret;

  ret = getrusage(who, &r);
  if(ret == -1)
    rb_sys_fail("getrusage");

  return rb_struct_new(v_usage_struct,
      rb_float_new((double)r.ru_utime.tv_sec+(double)r.ru_utime.tv_usec/1e6),
      rb_float_new((double)r.ru_stime.tv_sec+(double)r.ru_stime.tv_usec/1e6),
      LONG2NUM(r.ru_maxrss),
      LONG2NUM(r.ru_ixrss),
      LONG2NUM(r.ru_idrss),
      LONG2NUM(r.ru_isrss),
      LONG2NUM(r.ru_minflt),
      LONG2NUM(r.ru_majflt),
      LONG2NUM(r.ru_nswap),
      LONG2NUM(r.ru_inblock),
      LONG2NUM(r.ru_oublock),
      LONG2NUM(r.ru_msgsnd),
      LONG2NUM(r.ru_msgrcv),
      LONG2NUM(r.ru_nsignals),
      LONG2NUM(r.ru_nvcsw),
      LONG2NUM(r.ru_nivcsw)
   );
}

static VALUE rusage_get(int argc, VALUE* argv, VALUE mod){
  return do_rusage_get(RUSAGE_SELF);
}

static VALUE crusage_get(int argc, VALUE* argv, VALUE mod){
  return do_rusage_get(RUSAGE_CHILDREN);
}

void Init_rusage(){
  v_usage_struct =
     rb_struct_define("RUsage","utime","stime","maxrss","ixrss","idrss",
        "isrss","minflt","majflt","nswap","inblock","oublock","msgsnd",
        "msgrcv","nsignals","nvcsw","nivcsw",NULL
     );

  rb_define_module_function(rb_mProcess, "rusage", rusage_get, -1);
  rb_define_module_function(rb_mProcess, "crusage", crusage_get, -1);
}

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
scout_apm-2.3.0.pre3 ext/rusage/rusage.c
scout_apm-2.3.0.pre2 ext/rusage/rusage.c
scout_apm-2.3.0.pre1 ext/rusage/rusage.c
scout_apm-2.3.0.pre ext/rusage/rusage.c
scout_apm-2.1.32 ext/rusage/rusage.c
scout_apm-2.1.31 ext/rusage/rusage.c
scout_apm-2.1.30 ext/rusage/rusage.c
scout_apm-2.1.29 ext/rusage/rusage.c
scout_apm-2.1.28 ext/rusage/rusage.c
scout_apm-2.1.27 ext/rusage/rusage.c
scout_apm-2.1.26 ext/rusage/rusage.c
scout_apm-2.1.24 ext/rusage/rusage.c
scout_apm-2.1.23 ext/rusage/rusage.c
scout_apm-3.0.0.pre9 ext/rusage/rusage.c
scout_apm-2.1.22 ext/rusage/rusage.c
scout_apm-2.1.21 ext/rusage/rusage.c
scout_apm-2.1.20 ext/rusage/rusage.c
scout_apm-3.0.0.pre8 ext/rusage/rusage.c
scout_apm-2.1.19 ext/rusage/rusage.c
scout_apm-3.0.0.pre7 ext/rusage/rusage.c