ec_perf.h 968 B

123456789101112131415161718192021222324252627282930
  1. /*
  2. * Copyright (c) 2025, sakumisu
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #ifndef EC_PERF_H
  7. #define EC_PERF_H
  8. typedef struct {
  9. bool enable; // Enable performance measurement
  10. uint64_t count; // Current measurement count
  11. uint64_t min_interval; // Minimum interval
  12. uint64_t max_interval; // Maximum interval
  13. int64_t min_jitter; // Minimum jitter
  14. int64_t max_jitter; // Maximum jitter
  15. uint64_t total_interval; // Total interval time
  16. int64_t total_jitter; // Total jitter (for average calculation)
  17. uint32_t ignore_count; // Number of ignored measurements
  18. uint64_t last_timestamp; // Last interrupt timestamp
  19. uint64_t expected_interval; // Expected interrupt interval
  20. } ec_perf_t;
  21. void ec_perf_init(ec_perf_t *perf, uint64_t expected_interval_us);
  22. void ec_perf_polling(ec_perf_t *perf);
  23. bool ec_perf_is_complete(ec_perf_t *perf);
  24. void ec_perf_print_statistics(ec_perf_t *perf);
  25. #endif