/* * drivers/s390/cio/qdio_perf.h * * Copyright IBM Corp. 2008 * * Author: Jan Glauber (jang@linux.vnet.ibm.com) */ #ifndef QDIO_PERF_H #define QDIO_PERF_H #include #include #include struct qdio_perf_stats { /* interrupt handler calls */ atomic_long_t qdio_int; atomic_long_t pci_int; atomic_long_t thin_int; /* tasklet runs */ atomic_long_t tasklet_inbound; atomic_long_t tasklet_outbound; atomic_long_t tasklet_thinint; atomic_long_t tasklet_thinint_loop; atomic_long_t thinint_inbound; atomic_long_t thinint_inbound_loop; atomic_long_t thinint_inbound_loop2; /* signal adapter calls */ atomic_long_t siga_out; atomic_long_t siga_in; atomic_long_t siga_sync; /* misc */ atomic_long_t inbound_handler; atomic_long_t outbound_handler; atomic_long_t fast_requeue; atomic_long_t outbound_target_full; /* for debugging */ atomic_long_t debug_tl_out_timer; atomic_long_t debug_stop_polling; atomic_long_t debug_eqbs_all; atomic_long_t debug_eqbs_incomplete; atomic_long_t debug_sqbs_all; atomic_long_t debug_sqbs_incomplete; }; extern struct qdio_perf_stats perf_stats; extern int qdio_performance_stats; int qdio_setup_perf_stats(void); void qdio_remove_perf_stats(void); extern void qdio_perf_stat_inc(atomic_long_t *count); extern void qdio_perf_stat_dec(atomic_long_t *count); #endif