Changeset b10a434 in mainline for uspace/app/tmon/burst_tests.c


Ignore:
Timestamp:
2017-12-22T13:22:54Z (6 years ago)
Author:
Petr Mánek <petr.manek@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
00d23a2
Parents:
96c416a
git-author:
Petr Mánek <petr.manek@…> (2017-12-22 13:22:51)
git-committer:
Petr Mánek <petr.manek@…> (2017-12-22 13:22:54)
Message:

usbdiag: refactoring

Remote usbdiag interface has been modified to allow reporting test duration back to the caller. The usbdiag driver has been modified to pass such information to the remote interface. The tmon utility has been modified to display some basic statistical information derived from the received value.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/tmon/burst_tests.c

    r96c416a rb10a434  
    4343#include "tf.h"
    4444
    45 #define NAME "tmon"
     45#define NAME   "tmon"
     46#define INDENT "      "
    4647
    4748typedef struct tmon_burst_test_params {
     
    103104}
    104105
     106static void print_params(const tmon_burst_test_params_t *params)
     107{
     108        printf(INDENT "Number of cycles: %d\n", params->cycles);
     109        printf(INDENT "Data size: %ld B\n", params->size);
     110}
     111
     112static void print_results(const tmon_burst_test_params_t *params, usbdiag_dur_t duration)
     113{
     114        printf(INDENT "Total duration: %ld ms\n", duration);
     115
     116        const double dur_per_cycle = (double) duration / (double) params->cycles;
     117        printf(INDENT "Duration per cycle: %0.3f ms\n", dur_per_cycle);
     118
     119        const double speed = (double) params->size / (double) duration;
     120        printf(INDENT "Transfer speed: %0.3f B/s\n", speed);
     121}
     122
    105123static int run_intr_in(async_exch_t *exch, const tmon_test_params_t *generic_params)
    106124{
    107125        const tmon_burst_test_params_t *params = (tmon_burst_test_params_t *) generic_params;
    108         printf("Executing interrupt in test.\n"
    109             "      Number of cycles: %d\n"
    110             "      Data size: %ld B\n", params->cycles, params->size);
    111 
    112         int rc = usbdiag_burst_intr_in(exch, params->cycles, params->size);
    113         if (rc) {
    114                 printf(NAME ": Test failed. %s\n", str_error(rc));
    115                 return 1;
    116         }
    117 
     126        puts("Reading data from interrupt endpoint.\n");
     127        print_params(params);
     128
     129        usbdiag_dur_t duration;
     130        int rc = usbdiag_burst_intr_in(exch, params->cycles, params->size, &duration);
     131        if (rc) {
     132                printf(NAME ": Test failed with error: %s\n", str_error(rc));
     133                return 1;
     134        }
     135
     136        puts("Test succeeded.\n");
     137        print_results(params, duration);
    118138        return 0;
    119139}
     
    122142{
    123143        const tmon_burst_test_params_t *params = (tmon_burst_test_params_t *) generic_params;
    124         printf("Executing interrupt out test.\n"
    125             "      Number of cycles: %d\n"
    126             "      Data size: %ld B\n", params->cycles, params->size);
    127 
    128         int rc = usbdiag_burst_intr_out(exch, params->cycles, params->size);
    129         if (rc) {
    130                 printf(NAME ": Test failed. %s\n", str_error(rc));
    131                 return 1;
    132         }
    133 
     144        puts("Writing data to interrupt endpoint.\n");
     145        print_params(params);
     146
     147        usbdiag_dur_t duration;
     148        int rc = usbdiag_burst_intr_out(exch, params->cycles, params->size, &duration);
     149        if (rc) {
     150                printf(NAME ": Test failed with error: %s\n", str_error(rc));
     151                return 1;
     152        }
     153
     154        puts("Test succeeded.\n");
     155        print_results(params, duration);
    134156        return 0;
    135157}
     
    138160{
    139161        const tmon_burst_test_params_t *params = (tmon_burst_test_params_t *) generic_params;
    140         printf("Executing bulk in test.\n"
    141             "      Number of cycles: %d\n"
    142             "      Data size: %ld B\n", params->cycles, params->size);
    143 
    144         int rc = usbdiag_burst_bulk_in(exch, params->cycles, params->size);
    145         if (rc) {
    146                 printf(NAME ": Test failed. %s\n", str_error(rc));
    147                 return 1;
    148         }
    149 
     162        puts("Reading data from bulk endpoint.\n");
     163        print_params(params);
     164
     165        usbdiag_dur_t duration;
     166        int rc = usbdiag_burst_bulk_in(exch, params->cycles, params->size, &duration);
     167        if (rc) {
     168                printf(NAME ": Test failed with error: %s\n", str_error(rc));
     169                return 1;
     170        }
     171
     172        puts("Test succeeded.\n");
     173        print_results(params, duration);
    150174        return 0;
    151175}
     
    154178{
    155179        const tmon_burst_test_params_t *params = (tmon_burst_test_params_t *) generic_params;
    156         printf("Executing bulk out test.\n"
    157             "      Number of cycles: %d\n"
    158             "      Data size: %ld B\n", params->cycles, params->size);
    159 
    160         int rc = usbdiag_burst_bulk_out(exch, params->cycles, params->size);
    161         if (rc) {
    162                 printf(NAME ": Test failed. %s\n", str_error(rc));
    163                 return 1;
    164         }
    165 
     180        puts("Writing data to bulk endpoint.\n");
     181        print_params(params);
     182
     183        usbdiag_dur_t duration;
     184        int rc = usbdiag_burst_bulk_out(exch, params->cycles, params->size, &duration);
     185        if (rc) {
     186                printf(NAME ": Test failed with error: %s\n", str_error(rc));
     187                return 1;
     188        }
     189
     190        puts("Test succeeded.\n");
     191        print_results(params, duration);
    166192        return 0;
    167193}
     
    170196{
    171197        const tmon_burst_test_params_t *params = (tmon_burst_test_params_t *) generic_params;
    172         printf("Executing isochronous in test.\n"
    173             "      Number of cycles: %d\n"
    174             "      Data size: %ld B\n", params->cycles, params->size);
    175 
    176         int rc = usbdiag_burst_isoch_in(exch, params->cycles, params->size);
    177         if (rc) {
    178                 printf(NAME ": Test failed. %s\n", str_error(rc));
    179                 return 1;
    180         }
    181 
     198        puts("Reading data from isochronous endpoint.\n");
     199        print_params(params);
     200
     201        usbdiag_dur_t duration;
     202        int rc = usbdiag_burst_isoch_in(exch, params->cycles, params->size, &duration);
     203        if (rc) {
     204                printf(NAME ": Test failed with error: %s\n", str_error(rc));
     205                return 1;
     206        }
     207
     208        puts("Test succeeded.\n");
     209        print_results(params, duration);
    182210        return 0;
    183211}
     
    186214{
    187215        const tmon_burst_test_params_t *params = (tmon_burst_test_params_t *) generic_params;
    188         printf("Executing isochronous out test.\n"
    189             "      Number of cycles: %d\n"
    190             "      Data size: %ld B\n", params->cycles, params->size);
    191 
    192         int rc = usbdiag_burst_isoch_out(exch, params->cycles, params->size);
    193         if (rc) {
    194                 printf(NAME ": Test failed. %s\n", str_error(rc));
    195                 return 1;
    196         }
    197 
     216        puts("Writing data to isochronous endpoint.\n");
     217        print_params(params);
     218
     219        usbdiag_dur_t duration;
     220        int rc = usbdiag_burst_isoch_out(exch, params->cycles, params->size, &duration);
     221        if (rc) {
     222                printf(NAME ": Test failed with error: %s\n", str_error(rc));
     223                return 1;
     224        }
     225
     226        puts("Test succeeded.\n");
     227        print_results(params, duration);
    198228        return 0;
    199229}
Note: See TracChangeset for help on using the changeset viewer.