qdio_debug.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright IBM Corp. 2008
  4. *
  5. * Author: Jan Glauber (jang@linux.vnet.ibm.com)
  6. */
  7. #ifndef QDIO_DEBUG_H
  8. #define QDIO_DEBUG_H
  9. #include <asm/debug.h>
  10. #include <asm/qdio.h>
  11. #include "qdio.h"
  12. /* that gives us 15 characters in the text event views */
  13. #define QDIO_DBF_LEN 32
  14. extern debug_info_t *qdio_dbf_setup;
  15. extern debug_info_t *qdio_dbf_error;
  16. #define DBF_ERR 3 /* error conditions */
  17. #define DBF_WARN 4 /* warning conditions */
  18. #define DBF_INFO 6 /* informational */
  19. #undef DBF_EVENT
  20. #undef DBF_ERROR
  21. #undef DBF_DEV_EVENT
  22. #define DBF_EVENT(text...) \
  23. do { \
  24. char debug_buffer[QDIO_DBF_LEN]; \
  25. snprintf(debug_buffer, QDIO_DBF_LEN, text); \
  26. debug_text_event(qdio_dbf_setup, DBF_ERR, debug_buffer); \
  27. } while (0)
  28. static inline void DBF_HEX(void *addr, int len)
  29. {
  30. while (len > 0) {
  31. debug_event(qdio_dbf_setup, DBF_ERR, addr, len);
  32. len -= qdio_dbf_setup->buf_size;
  33. addr += qdio_dbf_setup->buf_size;
  34. }
  35. }
  36. #define DBF_ERROR(text...) \
  37. do { \
  38. char debug_buffer[QDIO_DBF_LEN]; \
  39. snprintf(debug_buffer, QDIO_DBF_LEN, text); \
  40. debug_text_event(qdio_dbf_error, DBF_ERR, debug_buffer); \
  41. } while (0)
  42. static inline void DBF_ERROR_HEX(void *addr, int len)
  43. {
  44. while (len > 0) {
  45. debug_event(qdio_dbf_error, DBF_ERR, addr, len);
  46. len -= qdio_dbf_error->buf_size;
  47. addr += qdio_dbf_error->buf_size;
  48. }
  49. }
  50. #define DBF_DEV_EVENT(level, device, text...) \
  51. do { \
  52. char debug_buffer[QDIO_DBF_LEN]; \
  53. if (debug_level_enabled(device->debug_area, level)) { \
  54. snprintf(debug_buffer, QDIO_DBF_LEN, text); \
  55. debug_text_event(device->debug_area, level, debug_buffer); \
  56. } \
  57. } while (0)
  58. static inline void DBF_DEV_HEX(struct qdio_irq *dev, void *addr,
  59. int len, int level)
  60. {
  61. while (len > 0) {
  62. debug_event(dev->debug_area, level, addr, len);
  63. len -= dev->debug_area->buf_size;
  64. addr += dev->debug_area->buf_size;
  65. }
  66. }
  67. int qdio_allocate_dbf(struct qdio_initialize *init_data,
  68. struct qdio_irq *irq_ptr);
  69. void qdio_setup_debug_entries(struct qdio_irq *irq_ptr,
  70. struct ccw_device *cdev);
  71. void qdio_shutdown_debug_entries(struct qdio_irq *irq_ptr);
  72. int qdio_debug_init(void);
  73. void qdio_debug_exit(void);
  74. #endif