This source file includes following definitions.
- strtail
1
2
3
4
5
6
7
8 #ifndef _CTCM_DBUG_H_
9 #define _CTCM_DBUG_H_
10
11
12
13
14
15 #include <asm/debug.h>
16
17 #ifdef DEBUG
18 #define do_debug 1
19 #else
20 #define do_debug 0
21 #endif
22 #ifdef DEBUGCCW
23 #define do_debug_ccw 1
24 #define DEBUGDATA 1
25 #else
26 #define do_debug_ccw 0
27 #endif
28 #ifdef DEBUGDATA
29 #define do_debug_data 1
30 #else
31 #define do_debug_data 0
32 #endif
33
34
35 #define CTC_DBF_ALWAYS 0
36 #define CTC_DBF_EMERG 0
37 #define CTC_DBF_ALERT 1
38 #define CTC_DBF_CRIT 2
39 #define CTC_DBF_ERROR 3
40 #define CTC_DBF_WARN 4
41 #define CTC_DBF_NOTICE 5
42 #define CTC_DBF_INFO 5
43 #define CTC_DBF_DEBUG 6
44
45 enum ctcm_dbf_names {
46 CTCM_DBF_SETUP,
47 CTCM_DBF_ERROR,
48 CTCM_DBF_TRACE,
49 CTCM_DBF_MPC_SETUP,
50 CTCM_DBF_MPC_ERROR,
51 CTCM_DBF_MPC_TRACE,
52 CTCM_DBF_INFOS
53 };
54
55 struct ctcm_dbf_info {
56 char name[DEBUG_MAX_NAME_LEN];
57 int pages;
58 int areas;
59 int len;
60 int level;
61 debug_info_t *id;
62 };
63
64 extern struct ctcm_dbf_info ctcm_dbf[CTCM_DBF_INFOS];
65
66 int ctcm_register_dbf_views(void);
67 void ctcm_unregister_dbf_views(void);
68 void ctcm_dbf_longtext(enum ctcm_dbf_names dbf_nix, int level, char *text, ...);
69
70 static inline const char *strtail(const char *s, int n)
71 {
72 int l = strlen(s);
73 return (l > n) ? s + (l - n) : s;
74 }
75
76 #define CTCM_FUNTAIL strtail((char *)__func__, 16)
77
78 #define CTCM_DBF_TEXT(name, level, text) \
79 do { \
80 debug_text_event(ctcm_dbf[CTCM_DBF_##name].id, level, text); \
81 } while (0)
82
83 #define CTCM_DBF_HEX(name, level, addr, len) \
84 do { \
85 debug_event(ctcm_dbf[CTCM_DBF_##name].id, \
86 level, (void *)(addr), len); \
87 } while (0)
88
89 #define CTCM_DBF_TEXT_(name, level, text...) \
90 ctcm_dbf_longtext(CTCM_DBF_##name, level, text)
91
92
93
94
95
96
97 #define CTCM_DBF_DEV_NAME(cat, dev, text) \
98 do { \
99 CTCM_DBF_TEXT_(cat, CTC_DBF_INFO, "%s(%s) :- %s", \
100 CTCM_FUNTAIL, dev->name, text); \
101 } while (0)
102
103 #define MPC_DBF_DEV_NAME(cat, dev, text) \
104 do { \
105 CTCM_DBF_TEXT_(MPC_##cat, CTC_DBF_INFO, "%s(%s) := %s", \
106 CTCM_FUNTAIL, dev->name, text); \
107 } while (0)
108
109 #define CTCMY_DBF_DEV_NAME(cat, dev, text) \
110 do { \
111 if (IS_MPCDEV(dev)) \
112 MPC_DBF_DEV_NAME(cat, dev, text); \
113 else \
114 CTCM_DBF_DEV_NAME(cat, dev, text); \
115 } while (0)
116
117
118
119
120
121
122 #define CTCM_DBF_DEV(cat, dev, text) \
123 do { \
124 CTCM_DBF_TEXT_(cat, CTC_DBF_INFO, "%s(%p) :-: %s", \
125 CTCM_FUNTAIL, dev, text); \
126 } while (0)
127
128 #define MPC_DBF_DEV(cat, dev, text) \
129 do { \
130 CTCM_DBF_TEXT_(MPC_##cat, CTC_DBF_INFO, "%s(%p) :=: %s", \
131 CTCM_FUNTAIL, dev, text); \
132 } while (0)
133
134 #define CTCMY_DBF_DEV(cat, dev, text) \
135 do { \
136 if (IS_MPCDEV(dev)) \
137 MPC_DBF_DEV(cat, dev, text); \
138 else \
139 CTCM_DBF_DEV(cat, dev, text); \
140 } while (0)
141
142 #endif