Changeset 494 for trunk/libffado/src/debugmodule/debugmodule.cpp
- Timestamp:
- 07/24/07 09:49:11 (17 years ago)
- Files:
-
- trunk/libffado/src/debugmodule/debugmodule.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/libffado/src/debugmodule/debugmodule.cpp
r445 r494 328 328 char msg[MB_BUFFERSIZE]; 329 329 va_list ap; 330 330 unsigned int ntries=5; 331 struct timespec wait = {0,50000}; 332 331 333 /* format the message first, to reduce lock contention */ 332 334 va_start(ap, fmt); 333 vsnprintf(msg, MB_BUFFERSIZE, fmt, ap); 335 if (vsnprintf(msg, MB_BUFFERSIZE, fmt, ap) >= MB_BUFFERSIZE) { 336 print("WARNING: message truncated!\n"); 337 } 334 338 va_end(ap); 335 339 … … 341 345 return; 342 346 } 343 if (pthread_mutex_trylock(&mb_write_lock) == 0) { 344 strncpy(mb_buffers[mb_inbuffer], msg, MB_BUFFERSIZE); 345 mb_inbuffer = MB_NEXT(mb_inbuffer); 346 pthread_cond_signal(&mb_ready_cond); 347 pthread_mutex_unlock(&mb_write_lock); 348 } else { /* lock collision */ 347 348 while (ntries) { // try a few times 349 if (pthread_mutex_trylock(&mb_write_lock) == 0) { 350 strncpy(mb_buffers[mb_inbuffer], msg, MB_BUFFERSIZE); 351 mb_inbuffer = MB_NEXT(mb_inbuffer); 352 pthread_cond_signal(&mb_ready_cond); 353 pthread_mutex_unlock(&mb_write_lock); 354 break; 355 } else { 356 nanosleep(&wait, NULL); 357 ntries--; 358 } 359 } 360 361 if (ntries==0) { /* lock collision */ 349 362 // atomic_add(&mb_overruns, 1); 350 363 // FIXME: atomicity … … 358 371 { 359 372 char msg[MB_BUFFERSIZE]; 373 unsigned int ntries=5; 374 struct timespec wait = {0,50000}; 360 375 361 376 /* format the message first, to reduce lock contention */ 362 vsnprintf(msg, MB_BUFFERSIZE, fmt, ap); 363 377 if (vsnprintf(msg, MB_BUFFERSIZE, fmt, ap) >= MB_BUFFERSIZE) { 378 print("WARNING: message truncated!\n"); 379 } 380 364 381 if (!mb_initialized) { 365 382 /* Unable to print message with realtime safety. … … 370 387 } 371 388 372 if (pthread_mutex_trylock(&mb_write_lock) == 0) { 373 strncpy(mb_buffers[mb_inbuffer], msg, MB_BUFFERSIZE); 374 mb_inbuffer = MB_NEXT(mb_inbuffer); 375 pthread_cond_signal(&mb_ready_cond); 376 pthread_mutex_unlock(&mb_write_lock); 377 } else { /* lock collision */ 389 while (ntries) { // try a few times 390 if (pthread_mutex_trylock(&mb_write_lock) == 0) { 391 strncpy(mb_buffers[mb_inbuffer], msg, MB_BUFFERSIZE); 392 mb_inbuffer = MB_NEXT(mb_inbuffer); 393 pthread_cond_signal(&mb_ready_cond); 394 pthread_mutex_unlock(&mb_write_lock); 395 break; 396 } else { 397 nanosleep(&wait, NULL); 398 ntries--; 399 } 400 } 401 402 if (ntries==0) { /* lock collision */ 378 403 // atomic_add(&mb_overruns, 1); 379 404 // FIXME: atomicity