ctcdbug.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. /*
  2. *
  3. * linux/drivers/s390/net/ctcdbug.h
  4. *
  5. * CTC / ESCON network driver - s390 dbf exploit.
  6. *
  7. * Copyright 2000,2003 IBM Corporation
  8. *
  9. * Author(s): Original Code written by
  10. * Peter Tiedemann (ptiedem@de.ibm.com)
  11. *
  12. * This program is free software; you can redistribute it and/or modify
  13. * it under the terms of the GNU General Public License as published by
  14. * the Free Software Foundation; either version 2, or (at your option)
  15. * any later version.
  16. *
  17. * This program is distributed in the hope that it will be useful,
  18. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  19. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  20. * GNU General Public License for more details.
  21. *
  22. * You should have received a copy of the GNU General Public License
  23. * along with this program; if not, write to the Free Software
  24. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  25. */
  26. #ifndef _CTCDBUG_H_
  27. #define _CTCDBUG_H_
  28. #include <asm/debug.h>
  29. #include "ctcmain.h"
  30. /**
  31. * Debug Facility stuff
  32. */
  33. #define CTC_DBF_SETUP_NAME "ctc_setup"
  34. #define CTC_DBF_SETUP_LEN 16
  35. #define CTC_DBF_SETUP_PAGES 8
  36. #define CTC_DBF_SETUP_NR_AREAS 1
  37. #define CTC_DBF_SETUP_LEVEL 3
  38. #define CTC_DBF_DATA_NAME "ctc_data"
  39. #define CTC_DBF_DATA_LEN 128
  40. #define CTC_DBF_DATA_PAGES 8
  41. #define CTC_DBF_DATA_NR_AREAS 1
  42. #define CTC_DBF_DATA_LEVEL 3
  43. #define CTC_DBF_TRACE_NAME "ctc_trace"
  44. #define CTC_DBF_TRACE_LEN 16
  45. #define CTC_DBF_TRACE_PAGES 4
  46. #define CTC_DBF_TRACE_NR_AREAS 2
  47. #define CTC_DBF_TRACE_LEVEL 3
  48. #define DBF_TEXT(name,level,text) \
  49. do { \
  50. debug_text_event(ctc_dbf_##name,level,text); \
  51. } while (0)
  52. #define DBF_HEX(name,level,addr,len) \
  53. do { \
  54. debug_event(ctc_dbf_##name,level,(void*)(addr),len); \
  55. } while (0)
  56. DECLARE_PER_CPU(char[256], ctc_dbf_txt_buf);
  57. extern debug_info_t *ctc_dbf_setup;
  58. extern debug_info_t *ctc_dbf_data;
  59. extern debug_info_t *ctc_dbf_trace;
  60. #define DBF_TEXT_(name,level,text...) \
  61. do { \
  62. char* ctc_dbf_txt_buf = get_cpu_var(ctc_dbf_txt_buf); \
  63. sprintf(ctc_dbf_txt_buf, text); \
  64. debug_text_event(ctc_dbf_##name,level,ctc_dbf_txt_buf); \
  65. put_cpu_var(ctc_dbf_txt_buf); \
  66. } while (0)
  67. #define DBF_SPRINTF(name,level,text...) \
  68. do { \
  69. debug_sprintf_event(ctc_dbf_trace, level, ##text ); \
  70. debug_sprintf_event(ctc_dbf_trace, level, text ); \
  71. } while (0)
  72. int ctc_register_dbf_views(void);
  73. void ctc_unregister_dbf_views(void);
  74. /**
  75. * some more debug stuff
  76. */
  77. #define HEXDUMP16(importance,header,ptr) \
  78. PRINT_##importance(header "%02x %02x %02x %02x %02x %02x %02x %02x " \
  79. "%02x %02x %02x %02x %02x %02x %02x %02x\n", \
  80. *(((char*)ptr)),*(((char*)ptr)+1),*(((char*)ptr)+2), \
  81. *(((char*)ptr)+3),*(((char*)ptr)+4),*(((char*)ptr)+5), \
  82. *(((char*)ptr)+6),*(((char*)ptr)+7),*(((char*)ptr)+8), \
  83. *(((char*)ptr)+9),*(((char*)ptr)+10),*(((char*)ptr)+11), \
  84. *(((char*)ptr)+12),*(((char*)ptr)+13), \
  85. *(((char*)ptr)+14),*(((char*)ptr)+15)); \
  86. PRINT_##importance(header "%02x %02x %02x %02x %02x %02x %02x %02x " \
  87. "%02x %02x %02x %02x %02x %02x %02x %02x\n", \
  88. *(((char*)ptr)+16),*(((char*)ptr)+17), \
  89. *(((char*)ptr)+18),*(((char*)ptr)+19), \
  90. *(((char*)ptr)+20),*(((char*)ptr)+21), \
  91. *(((char*)ptr)+22),*(((char*)ptr)+23), \
  92. *(((char*)ptr)+24),*(((char*)ptr)+25), \
  93. *(((char*)ptr)+26),*(((char*)ptr)+27), \
  94. *(((char*)ptr)+28),*(((char*)ptr)+29), \
  95. *(((char*)ptr)+30),*(((char*)ptr)+31));
  96. static inline void
  97. hex_dump(unsigned char *buf, size_t len)
  98. {
  99. size_t i;
  100. for (i = 0; i < len; i++) {
  101. if (i && !(i % 16))
  102. printk("\n");
  103. printk("%02x ", *(buf + i));
  104. }
  105. printk("\n");
  106. }
  107. #endif