Changeset 144 for eaccelerator/trunk/debug.c
- Timestamp:
- 01/10/06 22:12:16 (3 years ago)
- Files:
-
- eaccelerator/trunk/debug.c (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
eaccelerator/trunk/debug.c
r142 r144 36 36 #include <ctype.h> 37 37 #include <stdio.h> 38 39 FILE *F_fp = NULL; 38 #include <unistd.h> 39 #include <fcntl.h> 40 41 static FILE *F_fp = NULL; 42 static int file_no = 0; 40 43 long eaccelerator_debug = 0; 41 44 … … 49 52 REGISTER_MAIN_LONG_CONSTANT ("EA_LOG", EA_LOG, CONST_PERSISTENT | CONST_CS); 50 53 REGISTER_MAIN_LONG_CONSTANT ("EA_DEBUG", EA_DEBUG, CONST_PERSISTENT | CONST_CS); 51 REGISTER_MAIN_LONG_CONSTANT ("EA_PROFILE_OPCODES", EA_PROFILE_OPCODES, 52 CONST_PERSISTENT | CONST_CS); 53 REGISTER_MAIN_LONG_CONSTANT ("EA_TEST_PERFORMANCE", EA_TEST_PERFORMANCE, 54 CONST_PERSISTENT | CONST_CS); 55 REGISTER_MAIN_LONG_CONSTANT ("EA_LOG_HASHKEYS", EA_LOG_HASHKEYS, 56 CONST_PERSISTENT | CONST_CS); 54 REGISTER_MAIN_LONG_CONSTANT ("EA_PROFILE_OPCODES", EA_PROFILE_OPCODES, CONST_PERSISTENT | CONST_CS); 55 REGISTER_MAIN_LONG_CONSTANT ("EA_TEST_PERFORMANCE", EA_TEST_PERFORMANCE, CONST_PERSISTENT | CONST_CS); 56 REGISTER_MAIN_LONG_CONSTANT ("EA_LOG_HASHKEYS", EA_LOG_HASHKEYS, CONST_PERSISTENT | CONST_CS); 57 57 58 58 F_fp = fopen (EAG (eaccelerator_log_file), "a"); 59 59 if (!F_fp) 60 60 F_fp = stderr; 61 file_no = fileno(F_fp); 61 62 } 62 63 … … 72 73 } 73 74 75 /* lock the log file, don't lock stderr */ 76 static void ea_debug_lock() { 77 int rc; 78 struct flock l; 79 if (F_fp != stderr) { 80 l.l_whence = SEEK_SET; 81 l.l_start = 0; 82 l.l_len = 0; 83 l.l_pid = 0; 84 l.l_type = F_WRLCK; 85 do { 86 rc = fcntl(file_no, F_SETLKW, &l); 87 } while (rc < 0 && errno == EINTR); 88 } 89 } 90 91 static void ea_debug_unlock() { 92 int rc; 93 struct flock l; 94 if (F_fp != stderr) { 95 l.l_whence = SEEK_SET; 96 l.l_start = 0; 97 l.l_len = 0; 98 l.l_pid = 0; 99 l.l_type = F_UNLCK; 100 do { 101 rc = fcntl(file_no, F_SETLKW, &l); 102 } while (rc < 0 && errno == EINTR); 103 } 104 } 105 74 106 /** 75 107 * Print a log message that will be print when the debug level is … … 87 119 va_end (args); 88 120 121 ea_debug_lock(); 89 122 #ifdef ZEND_WIN32 90 123 OutputDebugString (output_buf); … … 93 126 fflush (F_fp); 94 127 #endif 128 ea_debug_unlock(); 95 129 } 96 130 } … … 136 170 vsnprintf (output_buf, sizeof (output_buf), format, args); 137 171 va_end (args); 138 172 173 ea_debug_lock(); 139 174 fputs (output_buf, F_fp); 140 175 fflush (F_fp); 176 ea_debug_unlock(); 141 177 } 142 178 } … … 154 190 { 155 191 if (debug_level & eaccelerator_debug) { 192 ea_debug_lock(); 156 193 fputs (message, F_fp); 157 194 fflush (F_fp); 195 ea_debug_unlock(); 158 196 } 159 197 } … … 171 209 { 172 210 if (eaccelerator_debug & debug_level) { 211 ea_debug_lock(); 173 212 while (len--) { 174 213 fputc (*p++, F_fp); … … 176 215 fputc ('\n', F_fp); 177 216 fflush (F_fp); 217 ea_debug_unlock(); 178 218 } 179 219 } … … 196 236 b = ht->pListHead; 197 237 198 fputs (p, F_fp); 238 ea_debug_lock(); 239 fputs(p, F_fp); 240 fflush(F_fp); 241 ea_debug_unlock(); 199 242 while (b) { 200 243 fprintf (F_fp, "[%d] ", i); … … 204 247 i++; 205 248 } 206 fflush (F_fp);207 249 } 208 250 } … … 220 262 { 221 263 if (eaccelerator_debug & debug_level) { 264 ea_debug_lock(); 222 265 int i = EAG (xpad); 223 266 while (i-- > 0) { 224 267 fputc ('\t', F_fp); 225 268 } 269 ea_debug_unlock(); 226 270 } 227 271 }