1 2 /*-------------------------------------------------------------*/ 3 #if NETWIB_DEBUG_LEAK_NEEDED==1 4 netwib_err netwib_debug_leak_init(void); 5 netwib_err netwib_debug_leak_close(void); 6 7 typedef enum { 8 NETWIB_DEBUG_LEAKTYPE_MEM = 1, 9 NETWIB_DEBUG_LEAKTYPE_FD, 10 NETWIB_DEBUG_LEAKTYPE_BUF, 11 NETWIB_DEBUG_LEAKTYPE_RING, 12 NETWIB_DEBUG_LEAKTYPE_RINGI, 13 NETWIB_DEBUG_LEAKTYPE_HASH, 14 NETWIB_DEBUG_LEAKTYPE_HASHI, 15 NETWIB_DEBUG_LEAKTYPE_ARRAY, 16 NETWIB_DEBUG_LEAKTYPE_DIR, 17 NETWIB_DEBUG_LEAKTYPE_IO, 18 NETWIB_DEBUG_LEAKTYPE_THREAD, 19 NETWIB_DEBUG_LEAKTYPE_THREAD_MUTEX, 20 NETWIB_DEBUG_LEAKTYPE_THREAD_RWLOCK, 21 NETWIB_DEBUG_LEAKTYPE_THREAD_COND, 22 NETWIB_DEBUG_LEAKTYPE_THREAD_TSD, 23 NETWIB_DEBUG_LEAKTYPE_WAIT, 24 NETWIB_DEBUG_LEAKTYPE_ETHS, 25 NETWIB_DEBUG_LEAKTYPE_IPS, 26 NETWIB_DEBUG_LEAKTYPE_PORTS, 27 NETWIB_DEBUG_LEAKTYPE_ETHS_INDEX, 28 NETWIB_DEBUG_LEAKTYPE_IPS_INDEX, 29 NETWIB_DEBUG_LEAKTYPE_PORTS_INDEX, 30 NETWIB_DEBUG_LEAKTYPE_CONF_DEVICES_INDEX, 31 NETWIB_DEBUG_LEAKTYPE_CONF_IP_INDEX, 32 NETWIB_DEBUG_LEAKTYPE_CONF_ARPCACHE_INDEX, 33 NETWIB_DEBUG_LEAKTYPE_CONF_ROUTES_INDEX, 34 NETWIB_DEBUG_LEAKTYPE_ENDENUM 35 } netwib_debug_leaktype; 36 netwib_err netwib_debug_leak_add(netwib_debug_leaktype type, 37 netwib_constptr infoptr, 38 netwib_uint32 infoint); 39 netwib_err netwib_debug_leak_del(netwib_debug_leaktype type, 40 netwib_bool useptr, 41 netwib_constptr infoptr, 42 netwib_bool useint, 43 netwib_uint32 infoint); 44 netwib_err netwib_debug_leak_valid(netwib_debug_leaktype type, 45 netwib_bool useptr, 46 netwib_constptr infoptr, 47 netwib_bool useint, 48 netwib_uint32 infoint); 49 50 netwib_err netwib_debug_leak_report(void); 51 52 #else 53 /*used in netwib without #if...*/ 54 #define netwib_debug_leak_init() NETWIB_ERR_OK; 55 #define netwib_debug_leak_close() NETWIB_ERR_OK; 56 #define netwib_debug_leak_report() NETWIB_ERR_OK; 57 #endif 58 59 /*-------------------------------------------------------------*/ 60 #if NETWIB_DEBUG_LEAK_NEEDED==1 61 netwib_err netwib_debug_leak_add_generic(netwib_constptr ptr, 62 netwib_debug_leaktype leaktype); 63 netwib_err netwib_debug_leak_del_generic(netwib_constptr ptr, 64 netwib_debug_leaktype leaktype); 65 netwib_err netwib_debug_leak_valid_generic(netwib_constptr ptr, 66 netwib_debug_leaktype leaktype); 67 #endif 68 69 /*-------------------------------------------------------------*/ 70 #if NETWIB_DEBUG_LEAK_NEEDED==1 71 netwib_err netwib_debug_leak_add_mem(netwib_uint32 allocsize, 72 netwib_constptr ptr); 73 netwib_err netwib_debug_leak_del_mem(netwib_constptr ptr); 74 netwib_err netwib_debug_leak_valid_mem(netwib_constptr ptr); 75 #endif 76 77 /*-------------------------------------------------------------*/ 78 #if NETWIB_DEBUG_LEAK_NEEDED==1 79 netwib_err netwib_debug_leak_add_fd(netwib_uint32 fd); 80 netwib_err netwib_debug_leak_del_fd(netwib_uint32 fd); 81 netwib_err netwib_debug_leak_valid_fd(netwib_uint32 fd); 82 #endif 83 84 /*-------------------------------------------------------------*/ 85 #if NETWIB_DEBUG_LEAK_NEEDED==1 86 #define NETWIB_DEBUG_LEAK_ID_BUF_IGNORE 99 87 netwib_err netwib_debug_leak_id_buf(netwib_uint32 *pleakid); 88 netwib_err netwib_debug_leak_add_buf(netwib_constptr ptr, 89 netwib_uint32 leakid); 90 netwib_err netwib_debug_leak_del_buf(netwib_constptr ptr, 91 netwib_uint32 leakid); 92 netwib_err netwib_debug_leak_valid_buf(netwib_constptr ptr, 93 netwib_uint32 leakid); 94 #endif 95 96 /*-------------------------------------------------------------*/ 97 #if NETWIB_DEBUG_LEAK_NEEDED==1 98 #define netwib_debug_leak_add_ring(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RING) 99 #define netwib_debug_leak_del_ring(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RING) 100 #define netwib_debug_leak_valid_ring(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RING) 101 #define netwib_debug_leak_add_ringi(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RINGI) 102 #define netwib_debug_leak_del_ringi(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RINGI) 103 #define netwib_debug_leak_valid_ringi(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_RINGI) 104 #endif 105 106 /*-------------------------------------------------------------*/ 107 #if NETWIB_DEBUG_LEAK_NEEDED==1 108 #define netwib_debug_leak_add_hash(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASH) 109 #define netwib_debug_leak_del_hash(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASH) 110 #define netwib_debug_leak_valid_hash(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASH) 111 #define netwib_debug_leak_add_hashi(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASHI) 112 #define netwib_debug_leak_del_hashi(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASHI) 113 #define netwib_debug_leak_valid_hashi(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_HASHI) 114 #endif 115 116 /*-------------------------------------------------------------*/ 117 #if NETWIB_DEBUG_LEAK_NEEDED==1 118 #define netwib_debug_leak_add_array(ptr) netwib_debug_leak_add_generic((ptr)->opaque,NETWIB_DEBUG_LEAKTYPE_ARRAY) 119 #define netwib_debug_leak_del_array(ptr) netwib_debug_leak_del_generic((ptr)->opaque,NETWIB_DEBUG_LEAKTYPE_ARRAY) 120 #define netwib_debug_leak_valid_array(ptr) netwib_debug_leak_valid_generic((ptr)->opaque,NETWIB_DEBUG_LEAKTYPE_ARRAY) 121 #endif 122 123 /*-------------------------------------------------------------*/ 124 #if NETWIB_DEBUG_LEAK_NEEDED==1 125 #define netwib_debug_leak_add_dir(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_DIR) 126 #define netwib_debug_leak_del_dir(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_DIR) 127 #define netwib_debug_leak_valid_dir(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_DIR) 128 #endif 129 130 /*-------------------------------------------------------------*/ 131 #if NETWIB_DEBUG_LEAK_NEEDED==1 132 #define netwib_debug_leak_add_io(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IO) 133 #define netwib_debug_leak_del_io(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IO) 134 #define netwib_debug_leak_valid_io(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IO) 135 #endif 136 137 /*-------------------------------------------------------------*/ 138 #if NETWIB_DEBUG_LEAK_NEEDED==1 139 #define netwib_debug_leak_add_thread(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD) 140 #define netwib_debug_leak_del_thread(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD) 141 #define netwib_debug_leak_valid_thread(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD) 142 #endif 143 144 /*-------------------------------------------------------------*/ 145 #if NETWIB_DEBUG_LEAK_NEEDED==1 146 #define netwib_debug_leak_add_thread_mutex(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_MUTEX) 147 #define netwib_debug_leak_del_thread_mutex(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_MUTEX) 148 #define netwib_debug_leak_valid_thread_mutex(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_MUTEX) 149 #endif 150 151 /*-------------------------------------------------------------*/ 152 #if NETWIB_DEBUG_LEAK_NEEDED==1 153 #define netwib_debug_leak_add_thread_rwlock(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_RWLOCK) 154 #define netwib_debug_leak_del_thread_rwlock(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_RWLOCK) 155 #define netwib_debug_leak_valid_thread_rwlock(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_RWLOCK) 156 #endif 157 158 /*-------------------------------------------------------------*/ 159 #if NETWIB_DEBUG_LEAK_NEEDED==1 160 #define netwib_debug_leak_add_thread_cond(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_COND) 161 #define netwib_debug_leak_del_thread_cond(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_COND) 162 #define netwib_debug_leak_valid_thread_cond(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_COND) 163 #endif 164 165 /*-------------------------------------------------------------*/ 166 #if NETWIB_DEBUG_LEAK_NEEDED==1 167 #define netwib_debug_leak_add_thread_tsd(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_TSD) 168 #define netwib_debug_leak_del_thread_tsd(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_TSD) 169 #define netwib_debug_leak_valid_thread_tsd(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_THREAD_TSD) 170 #endif 171 172 /*-------------------------------------------------------------*/ 173 #if NETWIB_DEBUG_LEAK_NEEDED==1 174 #define netwib_debug_leak_add_wait(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_WAIT) 175 #define netwib_debug_leak_del_wait(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_WAIT) 176 #define netwib_debug_leak_valid_wait(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_WAIT) 177 #endif 178 179 /*-------------------------------------------------------------*/ 180 #if NETWIB_DEBUG_LEAK_NEEDED==1 181 #define netwib_debug_leak_add_eths(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS) 182 #define netwib_debug_leak_del_eths(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS) 183 #define netwib_debug_leak_valid_eths(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS) 184 #endif 185 186 /*-------------------------------------------------------------*/ 187 #if NETWIB_DEBUG_LEAK_NEEDED==1 188 #define netwib_debug_leak_add_ips(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS) 189 #define netwib_debug_leak_del_ips(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS) 190 #define netwib_debug_leak_valid_ips(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS) 191 #endif 192 193 /*-------------------------------------------------------------*/ 194 #if NETWIB_DEBUG_LEAK_NEEDED==1 195 #define netwib_debug_leak_add_ports(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS) 196 #define netwib_debug_leak_del_ports(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS) 197 #define netwib_debug_leak_valid_ports(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS) 198 #endif 199 200 /*-------------------------------------------------------------*/ 201 #if NETWIB_DEBUG_LEAK_NEEDED==1 202 #define netwib_debug_leak_add_eths_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS_INDEX) 203 #define netwib_debug_leak_del_eths_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS_INDEX) 204 #define netwib_debug_leak_valid_eths_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_ETHS_INDEX) 205 #endif 206 207 /*-------------------------------------------------------------*/ 208 #if NETWIB_DEBUG_LEAK_NEEDED==1 209 #define netwib_debug_leak_add_ips_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS_INDEX) 210 #define netwib_debug_leak_del_ips_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS_INDEX) 211 #define netwib_debug_leak_valid_ips_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_IPS_INDEX) 212 #endif 213 214 /*-------------------------------------------------------------*/ 215 #if NETWIB_DEBUG_LEAK_NEEDED==1 216 #define netwib_debug_leak_add_ports_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS_INDEX) 217 #define netwib_debug_leak_del_ports_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS_INDEX) 218 #define netwib_debug_leak_valid_ports_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_PORTS_INDEX) 219 #endif 220 221 /*-------------------------------------------------------------*/ 222 #if NETWIB_DEBUG_LEAK_NEEDED==1 223 #define netwib_debug_leak_add_conf_devices_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_DEVICES_INDEX) 224 #define netwib_debug_leak_del_conf_devices_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_DEVICES_INDEX) 225 #define netwib_debug_leak_valid_conf_devices_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_DEVICES_INDEX) 226 #endif 227 228 /*-------------------------------------------------------------*/ 229 #if NETWIB_DEBUG_LEAK_NEEDED==1 230 #define netwib_debug_leak_add_conf_ip_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_IP_INDEX) 231 #define netwib_debug_leak_del_conf_ip_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_IP_INDEX) 232 #define netwib_debug_leak_valid_conf_ip_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_IP_INDEX) 233 #endif 234 235 /*-------------------------------------------------------------*/ 236 #if NETWIB_DEBUG_LEAK_NEEDED==1 237 #define netwib_debug_leak_add_conf_arpcache_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ARPCACHE_INDEX) 238 #define netwib_debug_leak_del_conf_arpcache_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ARPCACHE_INDEX) 239 #define netwib_debug_leak_valid_conf_arpcache_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ARPCACHE_INDEX) 240 #endif 241 242 /*-------------------------------------------------------------*/ 243 #if NETWIB_DEBUG_LEAK_NEEDED==1 244 #define netwib_debug_leak_add_conf_routes_index(ptr) netwib_debug_leak_add_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ROUTES_INDEX) 245 #define netwib_debug_leak_del_conf_routes_index(ptr) netwib_debug_leak_del_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ROUTES_INDEX) 246 #define netwib_debug_leak_valid_conf_routes_index(ptr) netwib_debug_leak_valid_generic(ptr,NETWIB_DEBUG_LEAKTYPE_CONF_ROUTES_INDEX) 247 #endif 248