qdio_debug.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * Copyright IBM Corp. 2008
  3. *
  4. * Author: Jan Glauber (jang@linux.vnet.ibm.com)
  5. */
  6. #ifndef QDIO_DEBUG_H
  7. #define QDIO_DEBUG_H
  8. #include <asm/debug.h>
  9. #include <asm/qdio.h>
  10. #include "qdio.h"
  11. /* that gives us 15 characters in the text event views */
  12. #define QDIO_DBF_LEN 16
  13. extern debug_info_t *qdio_dbf_setup;
  14. extern debug_info_t *qdio_dbf_error;
  15. /* sort out low debug levels early to avoid wasted sprints */
  16. static inline int qdio_dbf_passes(debug_info_t *dbf_grp, int level)
  17. {
  18. return (level <= dbf_grp->level);
  19. }
  20. #define DBF_ERR 3 /* error conditions */
  21. #define DBF_WARN 4 /* warning conditions */
  22. #define DBF_INFO 6 /* informational */
  23. #undef DBF_EVENT
  24. #undef DBF_ERROR
  25. #undef DBF_DEV_EVENT
  26. #define DBF_EVENT(text...) \
  27. do { \
  28. char debug_buffer[QDIO_DBF_LEN]; \
  29. snprintf(debug_buffer, QDIO_DBF_LEN, text); \
  30. debug_text_event(qdio_dbf_setup, DBF_ERR, debug_buffer); \
  31. } while (0)
  32. #define DBF_HEX(addr, len) \
  33. do { \
  34. debug_event(qdio_dbf_setup, DBF_ERR, (void*)(addr), len); \
  35. } while (0)
  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. #define DBF_ERROR_HEX(addr, len) \
  43. do { \
  44. debug_event(qdio_dbf_error, DBF_ERR, (void*)(addr), len); \
  45. } while (0)
  46. #define DBF_DEV_EVENT(level, device, text...) \
  47. do { \
  48. char debug_buffer[QDIO_DBF_LEN]; \
  49. if (qdio_dbf_passes(device->debug_area, level)) { \
  50. snprintf(debug_buffer, QDIO_DBF_LEN, text); \
  51. debug_text_event(device->debug_area, level, debug_buffer); \
  52. } \
  53. } while (0)
  54. #define DBF_DEV_HEX(level, device, addr, len) \
  55. do { \
  56. debug_event(device->debug_area, level, (void*)(addr), len); \
  57. } while (0)
  58. void qdio_allocate_dbf(struct qdio_initialize *init_data,
  59. struct qdio_irq *irq_ptr);
  60. void qdio_setup_debug_entries(struct qdio_irq *irq_ptr,
  61. struct ccw_device *cdev);
  62. void qdio_shutdown_debug_entries(struct qdio_irq *irq_ptr,
  63. struct ccw_device *cdev);
  64. int qdio_debug_init(void);
  65. void qdio_debug_exit(void);
  66. #endif