Commit | Line | Data |
---|---|---|
7725ccfd JH |
1 | /* |
2 | * Copyright (c) 2005-2009 Brocade Communications Systems, Inc. | |
3 | * All rights reserved | |
4 | * www.brocade.com | |
5 | * | |
6 | * Linux driver for Brocade Fibre Channel Host Bus Adapter. | |
7 | * | |
8 | * This program is free software; you can redistribute it and/or modify it | |
9 | * under the terms of the GNU General Public License (GPL) Version 2 as | |
10 | * published by the Free Software Foundation | |
11 | * | |
12 | * This program is distributed in the hope that it will be useful, but | |
13 | * WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 | * General Public License for more details. | |
16 | */ | |
17 | ||
18 | /** | |
19 | * bfa_log.h BFA log library data structure and function definition | |
20 | */ | |
21 | ||
22 | #ifndef __BFA_LOG_H__ | |
23 | #define __BFA_LOG_H__ | |
24 | ||
25 | #include <bfa_os_inc.h> | |
26 | #include <defs/bfa_defs_status.h> | |
27 | #include <defs/bfa_defs_aen.h> | |
28 | ||
29 | /* | |
30 | * BFA log module definition | |
31 | * | |
32 | * To create a new module id: | |
33 | * Add a #define at the end of the list below. Select a value for your | |
34 | * definition so that it is one (1) greater than the previous | |
35 | * definition. Modify the definition of BFA_LOG_MODULE_ID_MAX to become | |
36 | * your new definition. | |
37 | * Should have no gaps in between the values because this is used in arrays. | |
38 | * IMPORTANT: AEN_IDs must be at the begining, otherwise update bfa_defs_aen.h | |
39 | */ | |
40 | ||
41 | enum bfa_log_module_id { | |
42 | BFA_LOG_UNUSED_ID = 0, | |
43 | ||
44 | /* AEN defs begin */ | |
45 | BFA_LOG_AEN_MIN = BFA_LOG_UNUSED_ID, | |
46 | ||
47 | BFA_LOG_AEN_ID_ADAPTER = BFA_LOG_AEN_MIN + BFA_AEN_CAT_ADAPTER,/* 1 */ | |
48 | BFA_LOG_AEN_ID_PORT = BFA_LOG_AEN_MIN + BFA_AEN_CAT_PORT, /* 2 */ | |
49 | BFA_LOG_AEN_ID_LPORT = BFA_LOG_AEN_MIN + BFA_AEN_CAT_LPORT, /* 3 */ | |
50 | BFA_LOG_AEN_ID_RPORT = BFA_LOG_AEN_MIN + BFA_AEN_CAT_RPORT, /* 4 */ | |
51 | BFA_LOG_AEN_ID_ITNIM = BFA_LOG_AEN_MIN + BFA_AEN_CAT_ITNIM, /* 5 */ | |
52 | BFA_LOG_AEN_ID_TIN = BFA_LOG_AEN_MIN + BFA_AEN_CAT_TIN, /* 6 */ | |
53 | BFA_LOG_AEN_ID_IPFC = BFA_LOG_AEN_MIN + BFA_AEN_CAT_IPFC, /* 7 */ | |
54 | BFA_LOG_AEN_ID_AUDIT = BFA_LOG_AEN_MIN + BFA_AEN_CAT_AUDIT, /* 8 */ | |
55 | BFA_LOG_AEN_ID_IOC = BFA_LOG_AEN_MIN + BFA_AEN_CAT_IOC, /* 9 */ | |
56 | BFA_LOG_AEN_ID_ETHPORT = BFA_LOG_AEN_MIN + BFA_AEN_CAT_ETHPORT,/* 10 */ | |
57 | ||
58 | BFA_LOG_AEN_MAX = BFA_LOG_AEN_ID_ETHPORT, | |
59 | /* AEN defs end */ | |
60 | ||
61 | BFA_LOG_MODULE_ID_MIN = BFA_LOG_AEN_MAX, | |
62 | ||
63 | BFA_LOG_FW_ID = BFA_LOG_MODULE_ID_MIN + 1, | |
64 | BFA_LOG_HAL_ID = BFA_LOG_MODULE_ID_MIN + 2, | |
65 | BFA_LOG_FCS_ID = BFA_LOG_MODULE_ID_MIN + 3, | |
66 | BFA_LOG_WDRV_ID = BFA_LOG_MODULE_ID_MIN + 4, | |
67 | BFA_LOG_LINUX_ID = BFA_LOG_MODULE_ID_MIN + 5, | |
68 | BFA_LOG_SOLARIS_ID = BFA_LOG_MODULE_ID_MIN + 6, | |
69 | ||
70 | BFA_LOG_MODULE_ID_MAX = BFA_LOG_SOLARIS_ID, | |
71 | ||
72 | /* Not part of any arrays */ | |
73 | BFA_LOG_MODULE_ID_ALL = BFA_LOG_MODULE_ID_MAX + 1, | |
74 | BFA_LOG_AEN_ALL = BFA_LOG_MODULE_ID_MAX + 2, | |
75 | BFA_LOG_DRV_ALL = BFA_LOG_MODULE_ID_MAX + 3, | |
76 | }; | |
77 | ||
78 | /* | |
79 | * BFA log catalog name | |
80 | */ | |
81 | #define BFA_LOG_CAT_NAME "BFA" | |
82 | ||
83 | /* | |
84 | * bfa log severity values | |
85 | */ | |
86 | enum bfa_log_severity { | |
87 | BFA_LOG_INVALID = 0, | |
88 | BFA_LOG_CRITICAL = 1, | |
89 | BFA_LOG_ERROR = 2, | |
90 | BFA_LOG_WARNING = 3, | |
91 | BFA_LOG_INFO = 4, | |
92 | BFA_LOG_NONE = 5, | |
93 | BFA_LOG_LEVEL_MAX = BFA_LOG_NONE | |
94 | }; | |
95 | ||
96 | #define BFA_LOG_MODID_OFFSET 16 | |
97 | ||
98 | ||
99 | struct bfa_log_msgdef_s { | |
100 | u32 msg_id; /* message id */ | |
101 | int attributes; /* attributes */ | |
102 | int severity; /* severity level */ | |
103 | char *msg_value; | |
104 | /* msg string */ | |
105 | char *message; | |
106 | /* msg format string */ | |
107 | int arg_type; /* argument type */ | |
108 | int arg_num; /* number of argument */ | |
109 | }; | |
110 | ||
111 | /* | |
112 | * supported argument type | |
113 | */ | |
114 | enum bfa_log_arg_type { | |
115 | BFA_LOG_S = 0, /* string */ | |
116 | BFA_LOG_D, /* decimal */ | |
117 | BFA_LOG_I, /* integer */ | |
118 | BFA_LOG_O, /* oct number */ | |
119 | BFA_LOG_U, /* unsigned integer */ | |
120 | BFA_LOG_X, /* hex number */ | |
121 | BFA_LOG_F, /* floating */ | |
122 | BFA_LOG_C, /* character */ | |
123 | BFA_LOG_L, /* double */ | |
124 | BFA_LOG_P /* pointer */ | |
125 | }; | |
126 | ||
127 | #define BFA_LOG_ARG_TYPE 2 | |
128 | #define BFA_LOG_ARG0 (0 * BFA_LOG_ARG_TYPE) | |
129 | #define BFA_LOG_ARG1 (1 * BFA_LOG_ARG_TYPE) | |
130 | #define BFA_LOG_ARG2 (2 * BFA_LOG_ARG_TYPE) | |
131 | #define BFA_LOG_ARG3 (3 * BFA_LOG_ARG_TYPE) | |
132 | ||
133 | #define BFA_LOG_GET_MOD_ID(msgid) ((msgid >> BFA_LOG_MODID_OFFSET) & 0xff) | |
134 | #define BFA_LOG_GET_MSG_IDX(msgid) (msgid & 0xffff) | |
135 | #define BFA_LOG_GET_MSG_ID(msgdef) ((msgdef)->msg_id) | |
136 | #define BFA_LOG_GET_MSG_FMT_STRING(msgdef) ((msgdef)->message) | |
137 | #define BFA_LOG_GET_SEVERITY(msgdef) ((msgdef)->severity) | |
138 | ||
139 | /* | |
140 | * Event attributes | |
141 | */ | |
142 | #define BFA_LOG_ATTR_NONE 0 | |
143 | #define BFA_LOG_ATTR_AUDIT 1 | |
144 | #define BFA_LOG_ATTR_LOG 2 | |
145 | #define BFA_LOG_ATTR_FFDC 4 | |
146 | ||
147 | #define BFA_LOG_CREATE_ID(msw, lsw) \ | |
148 | (((u32)msw << BFA_LOG_MODID_OFFSET) | lsw) | |
149 | ||
150 | struct bfa_log_mod_s; | |
151 | ||
152 | /** | |
153 | * callback function | |
154 | */ | |
155 | typedef void (*bfa_log_cb_t)(struct bfa_log_mod_s *log_mod, u32 msg_id, | |
156 | const char *format, ...); | |
157 | ||
158 | ||
159 | struct bfa_log_mod_s { | |
0a4b1fc0 | 160 | char instance_info[BFA_STRING_32]; /* instance info */ |
7725ccfd JH |
161 | int log_level[BFA_LOG_MODULE_ID_MAX + 1]; |
162 | /* log level for modules */ | |
163 | bfa_log_cb_t cbfn; /* callback function */ | |
164 | }; | |
165 | ||
166 | extern int bfa_log_init(struct bfa_log_mod_s *log_mod, | |
167 | char *instance_name, bfa_log_cb_t cbfn); | |
168 | extern int bfa_log(struct bfa_log_mod_s *log_mod, u32 msg_id, ...); | |
169 | extern bfa_status_t bfa_log_set_level(struct bfa_log_mod_s *log_mod, | |
170 | int mod_id, enum bfa_log_severity log_level); | |
171 | extern bfa_status_t bfa_log_set_level_all(struct bfa_log_mod_s *log_mod, | |
172 | enum bfa_log_severity log_level); | |
173 | extern bfa_status_t bfa_log_set_level_aen(struct bfa_log_mod_s *log_mod, | |
174 | enum bfa_log_severity log_level); | |
175 | extern enum bfa_log_severity bfa_log_get_level(struct bfa_log_mod_s *log_mod, | |
176 | int mod_id); | |
177 | extern enum bfa_log_severity bfa_log_get_msg_level( | |
178 | struct bfa_log_mod_s *log_mod, u32 msg_id); | |
179 | /* | |
180 | * array of messages generated from xml files | |
181 | */ | |
182 | extern struct bfa_log_msgdef_s bfa_log_msg_array[]; | |
183 | ||
184 | #endif |