qdio_debug.h 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * drivers/s390/cio/qdio_debug.h
  3. *
  4. * Copyright IBM Corp. 2008
  5. *
  6. * Author: Jan Glauber (jang@linux.vnet.ibm.com)
  7. */
  8. #ifndef QDIO_DEBUG_H
  9. #define QDIO_DEBUG_H
  10. #include <asm/debug.h>
  11. #include <asm/qdio.h>
  12. #include "qdio.h"
  13. #define QDIO_DBF_HEX(ex, name, level, addr, len) \
  14. do { \
  15. if (ex) \
  16. debug_exception(qdio_dbf_##name, level, (void *)(addr), len); \
  17. else \
  18. debug_event(qdio_dbf_##name, level, (void *)(addr), len); \
  19. } while (0)
  20. #define QDIO_DBF_TEXT(ex, name, level, text) \
  21. do { \
  22. if (ex) \
  23. debug_text_exception(qdio_dbf_##name, level, text); \
  24. else \
  25. debug_text_event(qdio_dbf_##name, level, text); \
  26. } while (0)
  27. #define QDIO_DBF_HEX0(ex, name, addr, len) QDIO_DBF_HEX(ex, name, 0, addr, len)
  28. #define QDIO_DBF_HEX1(ex, name, addr, len) QDIO_DBF_HEX(ex, name, 1, addr, len)
  29. #define QDIO_DBF_HEX2(ex, name, addr, len) QDIO_DBF_HEX(ex, name, 2, addr, len)
  30. #ifdef CONFIG_QDIO_DEBUG
  31. #define QDIO_DBF_HEX3(ex, name, addr, len) QDIO_DBF_HEX(ex, name, 3, addr, len)
  32. #define QDIO_DBF_HEX4(ex, name, addr, len) QDIO_DBF_HEX(ex, name, 4, addr, len)
  33. #define QDIO_DBF_HEX5(ex, name, addr, len) QDIO_DBF_HEX(ex, name, 5, addr, len)
  34. #define QDIO_DBF_HEX6(ex, name, addr, len) QDIO_DBF_HEX(ex, name, 6, addr, len)
  35. #else
  36. #define QDIO_DBF_HEX3(ex, name, addr, len) do {} while (0)
  37. #define QDIO_DBF_HEX4(ex, name, addr, len) do {} while (0)
  38. #define QDIO_DBF_HEX5(ex, name, addr, len) do {} while (0)
  39. #define QDIO_DBF_HEX6(ex, name, addr, len) do {} while (0)
  40. #endif /* CONFIG_QDIO_DEBUG */
  41. #define QDIO_DBF_TEXT0(ex, name, text) QDIO_DBF_TEXT(ex, name, 0, text)
  42. #define QDIO_DBF_TEXT1(ex, name, text) QDIO_DBF_TEXT(ex, name, 1, text)
  43. #define QDIO_DBF_TEXT2(ex, name, text) QDIO_DBF_TEXT(ex, name, 2, text)
  44. #ifdef CONFIG_QDIO_DEBUG
  45. #define QDIO_DBF_TEXT3(ex, name, text) QDIO_DBF_TEXT(ex, name, 3, text)
  46. #define QDIO_DBF_TEXT4(ex, name, text) QDIO_DBF_TEXT(ex, name, 4, text)
  47. #define QDIO_DBF_TEXT5(ex, name, text) QDIO_DBF_TEXT(ex, name, 5, text)
  48. #define QDIO_DBF_TEXT6(ex, name, text) QDIO_DBF_TEXT(ex, name, 6, text)
  49. #else
  50. #define QDIO_DBF_TEXT3(ex, name, text) do {} while (0)
  51. #define QDIO_DBF_TEXT4(ex, name, text) do {} while (0)
  52. #define QDIO_DBF_TEXT5(ex, name, text) do {} while (0)
  53. #define QDIO_DBF_TEXT6(ex, name, text) do {} while (0)
  54. #endif /* CONFIG_QDIO_DEBUG */
  55. /* s390dbf views */
  56. #define QDIO_DBF_SETUP_LEN 8
  57. #define QDIO_DBF_SETUP_PAGES 8
  58. #define QDIO_DBF_SETUP_NR_AREAS 1
  59. #define QDIO_DBF_TRACE_LEN 8
  60. #define QDIO_DBF_TRACE_NR_AREAS 2
  61. #ifdef CONFIG_QDIO_DEBUG
  62. #define QDIO_DBF_TRACE_PAGES 32
  63. #define QDIO_DBF_SETUP_LEVEL 6
  64. #define QDIO_DBF_TRACE_LEVEL 4
  65. #else /* !CONFIG_QDIO_DEBUG */
  66. #define QDIO_DBF_TRACE_PAGES 8
  67. #define QDIO_DBF_SETUP_LEVEL 2
  68. #define QDIO_DBF_TRACE_LEVEL 2
  69. #endif /* CONFIG_QDIO_DEBUG */
  70. extern debug_info_t *qdio_dbf_setup;
  71. extern debug_info_t *qdio_dbf_trace;
  72. void qdio_allocate_do_dbf(struct qdio_initialize *init_data);
  73. void debug_print_bstat(struct qdio_q *q);
  74. void qdio_setup_debug_entries(struct qdio_irq *irq_ptr,
  75. struct ccw_device *cdev);
  76. void qdio_shutdown_debug_entries(struct qdio_irq *irq_ptr,
  77. struct ccw_device *cdev);
  78. int qdio_debug_init(void);
  79. void qdio_debug_exit(void);
  80. #endif