Lines Matching refs:ctx
109 #define F_CPU(ctx) ((ctx)->flags & CTLSTAT_FLAG_CPU) argument
110 #define F_HDR(ctx) ((ctx)->flags & CTLSTAT_FLAG_HEADER) argument
111 #define F_FIRST(ctx) ((ctx)->flags & CTLSTAT_FLAG_FIRST_RUN) argument
112 #define F_TOTALS(ctx) ((ctx)->flags & CTLSTAT_FLAG_TOTALS) argument
113 #define F_DMA(ctx) ((ctx)->flags & CTLSTAT_FLAG_DMA_TIME) argument
114 #define F_TIMEVAL(ctx) ((ctx)->flags & CTLSTAT_FLAG_TIME_VALID) argument
115 #define F_MASK(ctx) ((ctx)->flags & CTLSTAT_FLAG_MASK) argument
116 #define F_LUNS(ctx) ((ctx)->flags & CTLSTAT_FLAG_LUNS) argument
117 #define F_PORTS(ctx) ((ctx)->flags & CTLSTAT_FLAG_PORTS) argument
321 ctlstat_dump(struct ctlstat_context *ctx) in ctlstat_dump() argument
324 struct ctl_io_stats *stats = ctx->cur_stats; in ctlstat_dump()
326 for (i = 0; i < ctx->cur_items;i++) { in ctlstat_dump()
327 if (F_MASK(ctx) && bit_test(ctx->item_mask, i) == 0) in ctlstat_dump()
329 printf("%s %d\n", F_PORTS(ctx) ? "port" : "lun", stats[i].item); in ctlstat_dump()
348 ctlstat_json(struct ctlstat_context *ctx) { in ctlstat_json() argument
350 struct ctl_io_stats *stats = ctx->cur_stats; in ctlstat_json()
352 printf("{\"%s\":[", F_PORTS(ctx) ? "ports" : "luns"); in ctlstat_json()
353 for (i = 0; i < ctx->cur_items; i++) { in ctlstat_json()
354 if (F_MASK(ctx) && bit_test(ctx->item_mask, i) == 0) in ctlstat_json()
375 if (i < (ctx->cur_items - 1)) in ctlstat_json()
382 ctlstat_standard(struct ctlstat_context *ctx) { in ctlstat_standard() argument
390 if (F_CPU(ctx) && (getcpu(&ctx->cur_cpu) != 0)) in ctlstat_standard()
393 etime = ctx->cur_time.tv_sec - ctx->prev_time.tv_sec + in ctlstat_standard()
394 (ctx->prev_time.tv_nsec - ctx->cur_time.tv_nsec) * 1e-9; in ctlstat_standard()
396 if (F_CPU(ctx)) { in ctlstat_standard()
397 ctx->prev_total_jiffies = ctx->cur_total_jiffies; in ctlstat_standard()
398 ctx->cur_total_jiffies = ctx->cur_cpu.user + in ctlstat_standard()
399 ctx->cur_cpu.nice + ctx->cur_cpu.system + in ctlstat_standard()
400 ctx->cur_cpu.intr + ctx->cur_cpu.idle; in ctlstat_standard()
401 delta_jiffies = ctx->cur_total_jiffies; in ctlstat_standard()
402 if (F_FIRST(ctx) == 0) in ctlstat_standard()
403 delta_jiffies -= ctx->prev_total_jiffies; in ctlstat_standard()
404 ctx->prev_idle = ctx->cur_idle; in ctlstat_standard()
405 ctx->cur_idle = ctx->cur_cpu.idle; in ctlstat_standard()
406 delta_idle = ctx->cur_idle - ctx->prev_idle; in ctlstat_standard()
413 if (F_HDR(ctx)) { in ctlstat_standard()
414 ctx->header_interval--; in ctlstat_standard()
415 if (ctx->header_interval <= 0) { in ctlstat_standard()
420 if (F_CPU(ctx)) in ctlstat_standard()
422 if (F_TOTALS(ctx)) { in ctlstat_standard()
425 (F_TIMEVAL(ctx) != 0) ? " " : "", in ctlstat_standard()
426 (F_TIMEVAL(ctx) != 0) ? " " : "", in ctlstat_standard()
427 (F_TIMEVAL(ctx) != 0) ? " " : ""); in ctlstat_standard()
431 ctx->cur_items); i++) { in ctlstat_standard()
439 item = (int)ctx->cur_stats[i].item; in ctlstat_standard()
441 if (F_MASK(ctx) && in ctlstat_standard()
442 bit_test(ctx->item_mask, item) == 0) in ctlstat_standard()
445 F_PORTS(ctx) ? "port" : "lun", item, in ctlstat_standard()
446 (F_TIMEVAL(ctx) != 0) ? " " : ""); in ctlstat_standard()
451 if (F_CPU(ctx)) in ctlstat_standard()
455 (F_TIMEVAL(ctx) != 0) ? " ms" : "", in ctlstat_standard()
456 (F_DMA(ctx) == 0) ? "tps" : "dps"); in ctlstat_standard()
458 ctx->header_interval = 20; in ctlstat_standard()
462 if (F_CPU(ctx)) in ctlstat_standard()
464 if (F_TOTALS(ctx) != 0) { in ctlstat_standard()
473 ctx->prev_total_stats[i] = ctx->cur_total_stats[i]; in ctlstat_standard()
475 memset(&ctx->cur_total_stats, 0, sizeof(ctx->cur_total_stats)); in ctlstat_standard()
479 ctx->cur_total_stats[st].bytes[j] += \ in ctlstat_standard()
480 ctx->cur_stats[i].bytes[j] in ctlstat_standard()
482 ctx->cur_total_stats[st].operations[j] += \ in ctlstat_standard()
483 ctx->cur_stats[i].operations[j] in ctlstat_standard()
485 ctx->cur_total_stats[st].dmas[j] += \ in ctlstat_standard()
486 ctx->cur_stats[i].dmas[j] in ctlstat_standard()
488 bintime_add(&ctx->cur_total_stats[st].time[j], \ in ctlstat_standard()
489 &ctx->cur_stats[i].time[j]) in ctlstat_standard()
491 bintime_add(&ctx->cur_total_stats[st].dma_time[j], \ in ctlstat_standard()
492 &ctx->cur_stats[i].dma_time[j]) in ctlstat_standard()
494 for (i = 0; i < ctx->cur_items; i++) { in ctlstat_standard()
495 if (F_MASK(ctx) && bit_test(ctx->item_mask, in ctlstat_standard()
496 (int)ctx->cur_stats[i].item) == 0) in ctlstat_standard()
519 compute_stats(&ctx->cur_total_stats[i], in ctlstat_standard()
520 F_FIRST(ctx) ? NULL : &ctx->prev_total_stats[i], in ctlstat_standard()
525 if (F_DMA(ctx) != 0) in ctlstat_standard()
528 else if (F_TIMEVAL(ctx) != 0) in ctlstat_standard()
533 (F_DMA(ctx) == 0) ? transfers_per_sec[i] : in ctlstat_standard()
537 for (i = 0; i < min(CTL_STAT_BITS, ctx->cur_items); i++) { in ctlstat_standard()
544 if (F_MASK(ctx) && bit_test(ctx->item_mask, in ctlstat_standard()
545 (int)ctx->cur_stats[i].item) == 0) in ctlstat_standard()
547 for (j = 0; j < ctx->prev_items; j++) { in ctlstat_standard()
548 if (ctx->prev_stats[j].item == in ctlstat_standard()
549 ctx->cur_stats[i].item) in ctlstat_standard()
552 if (j >= ctx->prev_items) in ctlstat_standard()
554 compute_stats(&ctx->cur_stats[i], in ctlstat_standard()
555 j >= 0 ? &ctx->prev_stats[j] : NULL, in ctlstat_standard()
559 if (F_DMA(ctx)) in ctlstat_standard()
562 else if (F_TIMEVAL(ctx) != 0) in ctlstat_standard()
566 kb_per_transfer, (F_DMA(ctx) == 0) ? in ctlstat_standard()
578 struct ctlstat_context ctx; in main() local
585 memset(&ctx, 0, sizeof(ctx)); in main()
586 ctx.numdevs = 3; in main()
587 ctx.mode = CTLSTAT_MODE_STANDARD; in main()
588 ctx.flags |= CTLSTAT_FLAG_CPU; in main()
589 ctx.flags |= CTLSTAT_FLAG_FIRST_RUN; in main()
590 ctx.flags |= CTLSTAT_FLAG_HEADER; in main()
595 ctx.flags &= ~CTLSTAT_FLAG_CPU; in main()
601 ctx.flags |= CTLSTAT_FLAG_DMA_TIME; in main()
604 ctx.mode = CTLSTAT_MODE_DUMP; in main()
608 ctx.flags &= ~CTLSTAT_FLAG_HEADER; in main()
611 ctx.mode = CTLSTAT_MODE_JSON; in main()
621 if (!F_MASK(&ctx)) in main()
622 ctx.numdevs = 1; in main()
624 ctx.numdevs++; in main()
625 bit_set(ctx.item_mask, cur_lun); in main()
626 ctx.flags |= CTLSTAT_FLAG_MASK; in main()
627 ctx.flags |= CTLSTAT_FLAG_LUNS; in main()
631 ctx.numdevs = atoi(optarg); in main()
640 if (!F_MASK(&ctx)) in main()
641 ctx.numdevs = 1; in main()
643 ctx.numdevs++; in main()
644 bit_set(ctx.item_mask, cur_port); in main()
645 ctx.flags |= CTLSTAT_FLAG_MASK; in main()
646 ctx.flags |= CTLSTAT_FLAG_PORTS; in main()
650 ctx.flags |= CTLSTAT_FLAG_TOTALS; in main()
663 if (F_LUNS(&ctx) && F_PORTS(&ctx)) in main()
666 if (!F_LUNS(&ctx) && !F_PORTS(&ctx)) { in main()
667 if (F_TOTALS(&ctx)) in main()
668 ctx.flags |= CTLSTAT_FLAG_PORTS; in main()
670 ctx.flags |= CTLSTAT_FLAG_LUNS; in main()
673 if (!F_TOTALS(&ctx) && !F_MASK(&ctx)) { in main()
680 bit_nset(ctx.item_mask, 0, min(ctx.numdevs - 1, in main()
682 ctx.flags |= CTLSTAT_FLAG_MASK; in main()
689 tmp_stats = ctx.prev_stats; in main()
690 ctx.prev_stats = ctx.cur_stats; in main()
691 ctx.cur_stats = tmp_stats; in main()
692 c = ctx.prev_alloc; in main()
693 ctx.prev_alloc = ctx.cur_alloc; in main()
694 ctx.cur_alloc = c; in main()
695 c = ctx.prev_items; in main()
696 ctx.prev_items = ctx.cur_items; in main()
697 ctx.cur_items = c; in main()
698 ctx.prev_time = ctx.cur_time; in main()
699 ctx.prev_cpu = ctx.cur_cpu; in main()
700 if (getstats(fd, &ctx.cur_alloc, &ctx.cur_items, in main()
701 &ctx.cur_stats, &ctx.cur_time, &ctx.flags) != 0) in main()
704 switch(ctx.mode) { in main()
706 ctlstat_standard(&ctx); in main()
709 ctlstat_dump(&ctx); in main()
712 ctlstat_json(&ctx); in main()
719 ctx.flags &= ~CTLSTAT_FLAG_FIRST_RUN; in main()