ctcdbug.h 3.6 KB

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