Commit 7cc631ac authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

Add msleep misuse warning

parent 822412bf
...@@ -360,6 +360,9 @@ void mwait( mtime_t date ) ...@@ -360,6 +360,9 @@ void mwait( mtime_t date )
#endif #endif
} }
#include "libvlc.h" /* vlc_backtrace() */
/** /**
* Portable usleep(). Cancellation point. * Portable usleep(). Cancellation point.
* *
...@@ -367,6 +370,27 @@ void mwait( mtime_t date ) ...@@ -367,6 +370,27 @@ void mwait( mtime_t date )
*/ */
void msleep( mtime_t delay ) void msleep( mtime_t delay )
{ {
#ifndef NDEBUG
# if defined (__linux__) || defined (WIN32)
/* We assume that proper use of msleep() will not use a constant period...
* Media synchronization is likely to use mwait() with at least slight
* sleep length variation at microsecond precision. Network protocols
* normally have exponential backoffs, or long delays. */
static __thread unsigned tick_period = 0;
static __thread unsigned tick_frequency = 0;
if (tick_period != delay)
tick_frequency = 0;
tick_frequency++;
tick_period = delay;
if (delay < (29 * CLOCK_FREQ) && tick_frequency == 20)
{
fprintf (stderr, "Likely bogus delay(%"PRIu64"µs) ", delay);
vlc_backtrace ();
}
//fprintf (stderr, "%u, %u\n", tick_period, tick_frequency);
# endif
#endif
#if defined( HAVE_CLOCK_NANOSLEEP ) #if defined( HAVE_CLOCK_NANOSLEEP )
lldiv_t d = lldiv( delay, 1000000 ); lldiv_t d = lldiv( delay, 1000000 );
struct timespec ts = { d.quot, d.rem * 1000 }; struct timespec ts = { d.quot, d.rem * 1000 };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment