int getrusage_json (int who, json_object **op) { struct rusage ru; json_object *o; if (getrusage (who, &ru) < 0) return -1; o = Jnew (); Jadd_double (o, "utime", (double)ru.ru_utime.tv_sec + 1E-6 * ru.ru_utime.tv_usec); Jadd_double (o, "stime", (double)ru.ru_stime.tv_sec + 1E-6 * ru.ru_stime.tv_usec); Jadd_int64 (o, "maxrss", ru.ru_maxrss); Jadd_int64 (o, "ixrss", ru.ru_ixrss); Jadd_int64 (o, "idrss", ru.ru_idrss); Jadd_int64 (o, "isrss", ru.ru_isrss); Jadd_int64 (o, "minflt", ru.ru_minflt); Jadd_int64 (o, "majflt", ru.ru_majflt); Jadd_int64 (o, "nswap", ru.ru_nswap); Jadd_int64 (o, "inblock", ru.ru_inblock); Jadd_int64 (o, "oublock", ru.ru_oublock); Jadd_int64 (o, "msgsnd", ru.ru_msgsnd); Jadd_int64 (o, "msgrcv", ru.ru_msgrcv); Jadd_int64 (o, "nsignals", ru.ru_nsignals); Jadd_int64 (o, "nvcsw", ru.ru_nvcsw); Jadd_int64 (o, "nivcsw", ru.ru_nivcsw); *op = o; return 0; }
void test_sink (flux_t *h, uint32_t nodeid) { flux_future_t *f; json_object *in = Jnew(); Jadd_double (in, "pi", 3.14); if (!(f = flux_rpc (h, "req.sink", Jtostr (in), nodeid, 0)) || flux_future_get (f, NULL) < 0) log_err_exit ("%s", __FUNCTION__); Jput (in); flux_future_destroy (f); }
flux_msg_t *shutdown_vencode (double grace, int exitcode, int rank, const char *fmt, va_list ap) { flux_msg_t *msg; JSON out = Jnew (); char reason[REASON_MAX]; vsnprintf (reason, sizeof (reason), fmt, ap); Jadd_str (out, "reason", reason); Jadd_double (out, "grace", grace); Jadd_int (out, "rank", rank); Jadd_int (out, "exitcode", exitcode); msg = flux_event_encode ("shutdown", Jtostr (out)); Jput (out); return msg; }