+ /* steady state detection; move this behind json+? */
+ if (ts->ss) {
+ struct json_array *cache;
+ struct steadystate_data *ss = ts->ss;
+ int i, x;
+ char ss_option[64];
+
+ snprintf(ss_option, sizeof(ss_option), "%s%s:%f%s",
+ ss->check_iops ? "iops" : "bw",
+ ss->check_slope ? "_slope" : "",
+ (float) ss->limit,
+ ss->pct ? "%" : "");
+
+ tmp = json_create_object();
+ json_object_add_value_object(root, "steadystate", tmp);
+ json_object_add_value_string(tmp, "ss", ss_option);
+ json_object_add_value_int(tmp, "duration", (int)ss->dur);
+ json_object_add_value_int(tmp, "steadystate_ramptime", ss->ramp_time / 1000000L);
+ json_object_add_value_int(tmp, "attained", ss->attained);
+ json_object_add_value_float(tmp, "criterion", ss->pct ? ss->criterion / 100 : ss->criterion);
+
+ cache = json_create_array();
+ json_object_add_value_array(tmp, "data", cache);
+ for (i = 0; i < ss->dur; i++) {
+ x = (ss->head + i) % ss->dur;
+ json_array_add_value_int(cache, ss->cache[x]);
+ }
+ }
+