root/trunk/apache22/apr-util-hook-probes.patch
| Revision 2, 3.6 kB (checked in by jesus, 8 months ago) |
|---|
-
include/apr_hooks.h
old new 21 21 /* For apr_array_header_t */ 22 22 #include "apr_tables.h" 23 23 24 #ifdef APR_DTRACE_PROVIDER 25 #include <sys/sdt.h> 26 #ifndef OLD_DTRACE_PROBE 27 #define OLD_DTRACE_PROBE(name) __dtrace_ap___##name() 28 #endif 29 #ifndef OLD_DTRACE_PROBE1 30 #define OLD_DTRACE_PROBE1(name,a) __dtrace_ap___##name(a) 31 #endif 32 #ifndef OLD_DTRACE_PROBE2 33 #define OLD_DTRACE_PROBE2(name,a,b) __dtrace_ap___##name(a,b) 34 #endif 35 #else 36 #define OLD_DTRACE_PROBE(a) 37 #define OLD_DTRACE_PROBE1(a,b) 38 #define OLD_DTRACE_PROBE2(a,b,c) 39 #endif 40 24 41 /** 25 42 * @file apr_hooks.h 26 43 * @brief Apache hook functions … … 107 124 ns##_LINK_##name##_t *pHook; \ 108 125 int n; \ 109 126 \ 110 if(!_hooks.link_##name) \ 111 return; \ 127 OLD_DTRACE_PROBE(name##__entry); \ 112 128 \ 113 pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ 114 for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ 115 pHook[n].pFunc args_use; \ 129 if(_hooks.link_##name) \ 130 { \ 131 pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ 132 for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ 133 { \ 134 OLD_DTRACE_PROBE1(name##__dispatch__invoke, (char *)pHook[n].szName); \ 135 pHook[n].pFunc args_use; \ 136 OLD_DTRACE_PROBE2(name##__dispatch__complete, (char *)pHook[n].szName, 0); \ 137 } \ 138 } \ 139 \ 140 OLD_DTRACE_PROBE1(name##__return, 0); \ 141 \ 116 142 } 117 143 118 144 /* FIXME: note that this returns ok when nothing is run. I suspect it should … … 139 165 { \ 140 166 ns##_LINK_##name##_t *pHook; \ 141 167 int n; \ 142 ret rv ; \168 ret rv = ok; \ 143 169 \ 144 if(!_hooks.link_##name) \ 145 return ok; \ 170 OLD_DTRACE_PROBE(name##__entry); \ 146 171 \ 147 pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ 148 for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ 149 { \ 150 rv=pHook[n].pFunc args_use; \ 172 if(_hooks.link_##name) \ 173 { \ 174 pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ 175 for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ 176 { \ 177 OLD_DTRACE_PROBE1(name##__dispatch__invoke, (char *)pHook[n].szName); \ 178 rv=pHook[n].pFunc args_use; \ 179 OLD_DTRACE_PROBE2(name##__dispatch__complete, (char *)pHook[n].szName, rv); \ 180 if(rv != ok && rv != decline) \ 181 break; \ 182 rv = ok; \ 183 } \ 184 } \ 151 185 \ 152 if(rv != ok && rv != decline) \ 153 return rv; \ 154 } \ 155 return ok; \ 186 OLD_DTRACE_PROBE1(name##__return, rv); \ 187 \ 188 return rv; \ 156 189 } 157 190 158 191 … … 176 209 { \ 177 210 ns##_LINK_##name##_t *pHook; \ 178 211 int n; \ 179 ret rv ; \212 ret rv = decline; \ 180 213 \ 181 if(!_hooks.link_##name) \ 182 return decline; \ 214 OLD_DTRACE_PROBE(name##__entry); \ 183 215 \ 184 pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ 185 for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ 186 { \ 187 rv=pHook[n].pFunc args_use; \ 216 if(_hooks.link_##name) \ 217 { \ 218 pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ 219 for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ 220 { \ 221 OLD_DTRACE_PROBE1(name##__dispatch__invoke, (char *)pHook[n].szName); \ 222 rv=pHook[n].pFunc args_use; \ 223 OLD_DTRACE_PROBE2(name##__dispatch__complete, (char *)pHook[n].szName, rv); \ 188 224 \ 189 if(rv != decline) \ 190 return rv; \ 191 } \ 192 return decline; \ 225 if(rv != decline) \ 226 break; \ 227 } \ 228 } \ 229 \ 230 OLD_DTRACE_PROBE1(name##__return, rv); \ 231 \ 232 return rv; \ 193 233 } 194 234 195 235 /* Hook orderings */
Note: See TracBrowser for help on using the browser.
