Changeset e516ddb1ca69202f576d6e7020c9f9b2c90b8890

Show
Ignore:
Timestamp:
07/09/08 11:09:18 (3 months ago)
Author:
Rémi Denis-Courmont <rdenis@simphalempin.com>
git-committer:
Rémi Denis-Courmont <rdenis@simphalempin.com> 1220778558 +0300
git-parent:

[6db8a5e028fd4e7d97b95c7b945c13230f15a40b]

git-author:
Rémi Denis-Courmont <rdenis@simphalempin.com> 1220778558 +0300
Message:

Rework delay checking, use it for net_Accept, add deadline checks

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • include/vlc_mtime.h

    r6db8a5e re516ddb  
    8181__attribute__((noinline)) 
    8282__attribute__((error("sorry, cannot sleep for such short a time"))) 
    83 void impossible_msleep( mtime_t delay ) 
     83mtime_t impossible_delay( mtime_t delay ) 
    8484{ 
    8585    (void) delay; 
    86     msleep( VLC_HARD_MIN_SLEEP )
     86    return VLC_HARD_MIN_SLEEP
    8787} 
    8888 
     
    9090__attribute__((unused)) 
    9191__attribute__((noinline)) 
    92 __attribute__((warning("use proper event handling instead"))) 
    93 void bad_msleep( mtime_t delay ) 
     92__attribute__((warning("use proper event handling instead of short delay"))) 
     93mtime_t harmful_delay( mtime_t delay ) 
    9494{ 
    95     msleep( delay )
     95    return delay
    9696} 
    9797 
    98 # define msleep( d ) \ 
     98# define check_delay( d ) \ 
    9999    ((__builtin_constant_p(d < VLC_HARD_MIN_SLEEP) \ 
    100100   && (d < VLC_HARD_MIN_SLEEP)) \ 
    101        ? impossible_msleep(d) \ 
     101       ? impossible_delay(d) \ 
    102102       : ((__builtin_constant_p(d < VLC_SOFT_MIN_SLEEP) \ 
    103103       && (d < VLC_SOFT_MIN_SLEEP)) \ 
    104            ? bad_msleep(d) \ 
    105            : msleep(d))) 
     104           ? harmful_delay(d) \ 
     105           : d)) 
     106 
     107static 
     108__attribute__((unused)) 
     109__attribute__((noinline)) 
     110__attribute__((error("deadlines can not be constant"))) 
     111mtime_t impossible_deadline( mtime_t deadline ) 
     112
     113    return deadline; 
     114
     115 
     116# define check_deadline( d ) \ 
     117    (__builtin_constant_p(d) ? impossible_deadline(d) : d) 
     118#else 
     119# define check_delay(d) (d) 
     120# define check_deadline(d) (d) 
    106121#endif 
     122 
     123#define msleep(d) msleep(check_delay(d)) 
     124#define mwait(d) mwait(check_deadline(d)) 
    107125 
    108126/***************************************************************************** 
  • include/vlc_network.h

    rebd8003 re516ddb  
    108108VLC_EXPORT( int, net_AcceptSingle, (vlc_object_t *obj, int lfd) ); 
    109109 
    110 #define net_Accept(a, b, c) __net_Accept(VLC_OBJECT(a), b, c) 
    111110VLC_EXPORT( int, __net_Accept, ( vlc_object_t *, int *, mtime_t ) ); 
     111#define net_Accept(a, b, c) \ 
     112      __net_Accept(VLC_OBJECT(a), b, c ? check_delay(c) : 0) 
    112113 
    113114#define net_ConnectDgram(a, b, c, d, e ) __net_ConnectDgram(VLC_OBJECT(a), b, c, d, e) 
  • include/vlc_objects.h

    rcd133b2 re516ddb  
    140140VLC_EXPORT( int, __vlc_object_timedwait, ( vlc_object_t *, mtime_t ) ); 
    141141#define vlc_object_timedwait( obj, d ) \ 
    142     __vlc_object_timedwait( VLC_OBJECT( obj ), d
     142    __vlc_object_timedwait( VLC_OBJECT( obj ), check_deadline(d)
    143143 
    144144VLC_EXPORT( void, __vlc_object_signal_unlocked, ( vlc_object_t * ) ); 
  • include/vlc_threads.h

    r12e7640 re516ddb  
    412412 * Returns 0 if object signaled, an error code in case of timeout or error. 
    413413 *****************************************************************************/ 
    414 #define vlc_cond_timedwait( P_COND, P_MUTEX, DEADLINE )                     
    415     __vlc_cond_timedwait( __FILE__, __LINE__, P_COND, P_MUTEX, DEADLINE
     414#define vlc_cond_timedwait( c, m, d )
     415    __vlc_cond_timedwait( __FILE__, __LINE__, c, m, check_deadline(d)
    416416 
    417417static inline int __vlc_cond_timedwait( const char * psz_file, int i_line, 
  • src/misc/mtime.c

    r6f3e3a2 re516ddb  
    315315} 
    316316 
     317#undef mwait 
    317318/** 
    318319 * Wait for a date