Changeset 8923568d00bddb39e34f82ee8b62152389321b77
- Timestamp:
- 09/15/06 17:10:25
(2 years ago)
- Author:
- Clément Stenac <zorglub@videolan.org>
- git-committer:
- Clément Stenac <zorglub@videolan.org> 1158333025 +0000
- git-parent:
[f485214f09dd284cbb85674e937fbbb0a6032a2e]
- git-author:
- Clément Stenac <zorglub@videolan.org> 1158333025 +0000
- Message:
Move stats stuff to the per-instance object
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| rf485214 |
r8923568 |
|
| 48 | 48 | |
|---|
| 49 | 49 | module_bank_t * p_module_bank; ///< The module bank |
|---|
| 50 | | |
|---|
| 51 | | vlc_bool_t b_stats; ///< Should we collect stats |
|---|
| 52 | | /* Timers handling */ |
|---|
| 53 | | vlc_mutex_t timer_lock; ///< Lock to protect timers |
|---|
| 54 | | int i_timers; ///< Number of timers |
|---|
| 55 | | counter_t **pp_timers; ///< Array of all timers |
|---|
| 56 | | |
|---|
| 57 | 50 | intf_thread_t *p_probe; ///< Devices prober |
|---|
| 58 | 51 | |
|---|
| … | … | |
| 99 | 92 | void* ( *pf_memset ) ( void *, int, size_t ); |
|---|
| 100 | 93 | |
|---|
| 101 | | /* Shared data - these structures are accessed directly from p_vlc by |
|---|
| 102 | | * several modules */ |
|---|
| | 94 | /* Statistics */ |
|---|
| | 95 | vlc_bool_t b_stats; ///< Should we collect stats |
|---|
| | 96 | /* Timers handling */ |
|---|
| | 97 | vlc_mutex_t timer_lock; ///< Lock to protect timers |
|---|
| | 98 | int i_timers; ///< Number of timers |
|---|
| | 99 | counter_t **pp_timers; ///< Array of all timers |
|---|
| 103 | 100 | |
|---|
| 104 | 101 | /* Locks */ |
|---|
| rf485214 |
r8923568 |
|
| 1027 | 1027 | i_delay = 0; |
|---|
| 1028 | 1028 | |
|---|
| 1029 | | if( p_input->p_libvlc_global->b_stats ) |
|---|
| | 1029 | if( p_input->p_libvlc->b_stats ) |
|---|
| 1030 | 1030 | { |
|---|
| 1031 | 1031 | vlc_mutex_lock( &p_input->counters.counters_lock ); |
|---|
| rf485214 |
r8923568 |
|
| 686 | 686 | #define INIT_COUNTER( p, type, compute ) p_input->counters.p_##p = \ |
|---|
| 687 | 687 | stats_CounterCreate( p_input, VLC_VAR_##type, STATS_##compute); |
|---|
| 688 | | if( p_input->p_libvlc_global->b_stats ) |
|---|
| | 688 | if( p_input->p_libvlc->b_stats ) |
|---|
| 689 | 689 | { |
|---|
| 690 | 690 | INIT_COUNTER( read_bytes, INTEGER, COUNTER ); |
|---|
| … | … | |
| 722 | 722 | return VLC_EGENERIC; |
|---|
| 723 | 723 | } |
|---|
| 724 | | if( p_input->p_libvlc_global->b_stats ) |
|---|
| | 724 | if( p_input->p_libvlc->b_stats ) |
|---|
| 725 | 725 | { |
|---|
| 726 | 726 | INIT_COUNTER( sout_sent_packets, INTEGER, COUNTER ); |
|---|
| … | … | |
| 1115 | 1115 | |
|---|
| 1116 | 1116 | #define CL_CO( c ) stats_CounterClean( p_input->counters.p_##c ); p_input->counters.p_##c = NULL; |
|---|
| 1117 | | if( p_input->p_libvlc_global->b_stats ) |
|---|
| | 1117 | if( p_input->p_libvlc->b_stats ) |
|---|
| 1118 | 1118 | { |
|---|
| 1119 | 1119 | vlc_mutex_lock( &p_input->counters.counters_lock ); |
|---|
| rf485214 |
r8923568 |
|
| 1656 | 1656 | p_block = p_access->pf_block( p_access ); |
|---|
| 1657 | 1657 | if( pb_eof ) *pb_eof = p_access->info.b_eof; |
|---|
| 1658 | | if( p_input && p_block && p_access->p_libvlc_global->b_stats ) |
|---|
| | 1658 | if( p_input && p_block && p_access->p_libvlc->b_stats ) |
|---|
| 1659 | 1659 | { |
|---|
| 1660 | 1660 | vlc_object_yield( p_input ); |
|---|
| rf485214 |
r8923568 |
|
| 715 | 715 | } |
|---|
| 716 | 716 | |
|---|
| 717 | | libvlc_global.b_stats = config_GetInt( p_libvlc, "stats" ); |
|---|
| 718 | | libvlc_global.i_timers = 0; |
|---|
| 719 | | libvlc_global.pp_timers = NULL; |
|---|
| 720 | | vlc_mutex_init( p_libvlc, &libvlc_global.timer_lock ); |
|---|
| | 717 | p_libvlc->b_stats = config_GetInt( p_libvlc, "stats" ); |
|---|
| | 718 | p_libvlc->i_timers = 0; |
|---|
| | 719 | p_libvlc->pp_timers = NULL; |
|---|
| | 720 | vlc_mutex_init( p_libvlc, &p_libvlc->timer_lock ); |
|---|
| 721 | 721 | |
|---|
| 722 | 722 | /* |
|---|
| rf485214 |
r8923568 |
|
| 79 | 79 | vlc_value_t val, vlc_value_t *val_new ) |
|---|
| 80 | 80 | { |
|---|
| 81 | | if( !p_this->p_libvlc_global->b_stats || !p_counter ) return VLC_EGENERIC; |
|---|
| | 81 | if( !p_this->p_libvlc->b_stats || !p_counter ) return VLC_EGENERIC; |
|---|
| 82 | 82 | return CounterUpdate( p_this, p_counter, val, val_new ); |
|---|
| 83 | 83 | } |
|---|
| … | … | |
| 92 | 92 | int __stats_Get( vlc_object_t *p_this, counter_t *p_counter, vlc_value_t *val ) |
|---|
| 93 | 93 | { |
|---|
| 94 | | if( !p_this->p_libvlc_global->b_stats || !p_counter || p_counter->i_samples == 0 ) |
|---|
| | 94 | if( !p_this->p_libvlc->b_stats || !p_counter || p_counter->i_samples == 0 ) |
|---|
| 95 | 95 | { |
|---|
| 96 | 96 | val->i_int = val->f_float = 0.0; |
|---|
| … | … | |
| 136 | 136 | void stats_ComputeInputStats( input_thread_t *p_input, input_stats_t *p_stats ) |
|---|
| 137 | 137 | { |
|---|
| 138 | | if( !p_input->p_libvlc_global->b_stats ) return; |
|---|
| | 138 | if( !p_input->p_libvlc->b_stats ) return; |
|---|
| 139 | 139 | |
|---|
| 140 | 140 | vlc_mutex_lock( &p_input->counters.counters_lock ); |
|---|
| … | … | |
| 224 | 224 | int i_index; |
|---|
| 225 | 225 | |
|---|
| 226 | | if( !p_obj->p_libvlc_global->b_stats ) return; |
|---|
| | 226 | if( !p_obj->p_libvlc->b_stats ) return; |
|---|
| 227 | 227 | |
|---|
| 228 | 228 | vlc_mutex_lock( &p_stats->lock ); |
|---|
| … | … | |
| 269 | 269 | int i; |
|---|
| 270 | 270 | counter_t *p_counter = NULL; |
|---|
| 271 | | if( !p_obj->p_libvlc_global->b_stats ) return; |
|---|
| 272 | | vlc_mutex_lock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| 273 | | |
|---|
| 274 | | for( i = 0 ; i < p_obj->p_libvlc_global->i_timers; i++ ) |
|---|
| 275 | | { |
|---|
| 276 | | if( p_obj->p_libvlc_global->pp_timers[i]->i_id == i_id ) |
|---|
| 277 | | { |
|---|
| 278 | | p_counter = p_obj->p_libvlc_global->pp_timers[i]; |
|---|
| | 271 | if( !p_obj->p_libvlc->b_stats ) return; |
|---|
| | 272 | vlc_mutex_lock( &p_obj->p_libvlc->timer_lock ); |
|---|
| | 273 | |
|---|
| | 274 | for( i = 0 ; i < p_obj->p_libvlc->i_timers; i++ ) |
|---|
| | 275 | { |
|---|
| | 276 | if( p_obj->p_libvlc->pp_timers[i]->i_id == i_id ) |
|---|
| | 277 | { |
|---|
| | 278 | p_counter = p_obj->p_libvlc->pp_timers[i]; |
|---|
| 279 | 279 | break; |
|---|
| 280 | 280 | } |
|---|
| … | … | |
| 287 | 287 | if( !p_counter ) |
|---|
| 288 | 288 | { |
|---|
| 289 | | vlc_mutex_unlock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| | 289 | vlc_mutex_unlock( &p_obj->p_libvlc->timer_lock ); |
|---|
| 290 | 290 | return; |
|---|
| 291 | 291 | } |
|---|
| 292 | 292 | p_counter->psz_name = strdup( psz_name ); |
|---|
| 293 | 293 | p_counter->i_id = i_id; |
|---|
| 294 | | INSERT_ELEM( p_obj->p_libvlc_global->pp_timers, p_obj->p_libvlc_global->i_timers, |
|---|
| 295 | | p_obj->p_libvlc_global->i_timers, p_counter ); |
|---|
| | 294 | INSERT_ELEM( p_obj->p_libvlc->pp_timers, p_obj->p_libvlc->i_timers, |
|---|
| | 295 | p_obj->p_libvlc->i_timers, p_counter ); |
|---|
| 296 | 296 | |
|---|
| 297 | 297 | /* 1st sample : if started: start_date, else last_time, b_started */ |
|---|
| … | … | |
| 309 | 309 | { |
|---|
| 310 | 310 | msg_Warn( p_obj, "timer %s was already started !", psz_name ); |
|---|
| 311 | | vlc_mutex_unlock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| | 311 | vlc_mutex_unlock( &p_obj->p_libvlc->timer_lock ); |
|---|
| 312 | 312 | return; |
|---|
| 313 | 313 | } |
|---|
| 314 | 314 | p_counter->pp_samples[0]->value.b_bool = VLC_TRUE; |
|---|
| 315 | 315 | p_counter->pp_samples[0]->date = mdate(); |
|---|
| 316 | | vlc_mutex_unlock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| | 316 | vlc_mutex_unlock( &p_obj->p_libvlc->timer_lock ); |
|---|
| 317 | 317 | } |
|---|
| 318 | 318 | |
|---|
| … | … | |
| 321 | 321 | counter_t *p_counter = NULL; |
|---|
| 322 | 322 | int i; |
|---|
| 323 | | if( !p_obj->p_libvlc_global->b_stats ) return; |
|---|
| 324 | | vlc_mutex_lock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| 325 | | for( i = 0 ; i < p_obj->p_libvlc_global->i_timers; i++ ) |
|---|
| 326 | | { |
|---|
| 327 | | if( p_obj->p_libvlc_global->pp_timers[i]->i_id == i_id ) |
|---|
| 328 | | { |
|---|
| 329 | | p_counter = p_obj->p_libvlc_global->pp_timers[i]; |
|---|
| | 323 | if( !p_obj->p_libvlc->b_stats ) return; |
|---|
| | 324 | vlc_mutex_lock( &p_obj->p_libvlc->timer_lock ); |
|---|
| | 325 | for( i = 0 ; i < p_obj->p_libvlc->i_timers; i++ ) |
|---|
| | 326 | { |
|---|
| | 327 | if( p_obj->p_libvlc->pp_timers[i]->i_id == i_id ) |
|---|
| | 328 | { |
|---|
| | 329 | p_counter = p_obj->p_libvlc->pp_timers[i]; |
|---|
| 330 | 330 | break; |
|---|
| 331 | 331 | } |
|---|
| … | … | |
| 334 | 334 | { |
|---|
| 335 | 335 | msg_Err( p_obj, "timer does not exist" ); |
|---|
| 336 | | vlc_mutex_unlock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| | 336 | vlc_mutex_unlock( &p_obj->p_libvlc->timer_lock ); |
|---|
| 337 | 337 | return; |
|---|
| 338 | 338 | } |
|---|
| … | … | |
| 341 | 341 | p_counter->pp_samples[0]->date = mdate() - p_counter->pp_samples[0]->date; |
|---|
| 342 | 342 | p_counter->pp_samples[1]->date += p_counter->pp_samples[0]->date; |
|---|
| 343 | | vlc_mutex_unlock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| | 343 | vlc_mutex_unlock( &p_obj->p_libvlc->timer_lock ); |
|---|
| 344 | 344 | } |
|---|
| 345 | 345 | |
|---|
| … | … | |
| 348 | 348 | counter_t *p_counter = NULL; |
|---|
| 349 | 349 | int i; |
|---|
| 350 | | if( !p_obj->p_libvlc_global->b_stats ) return; |
|---|
| 351 | | vlc_mutex_lock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| 352 | | for( i = 0 ; i < p_obj->p_libvlc_global->i_timers; i++ ) |
|---|
| 353 | | { |
|---|
| 354 | | if( p_obj->p_libvlc_global->pp_timers[i]->i_id == i_id ) |
|---|
| 355 | | { |
|---|
| 356 | | p_counter = p_obj->p_libvlc_global->pp_timers[i]; |
|---|
| | 350 | if( !p_obj->p_libvlc->b_stats ) return; |
|---|
| | 351 | vlc_mutex_lock( &p_obj->p_libvlc->timer_lock ); |
|---|
| | 352 | for( i = 0 ; i < p_obj->p_libvlc->i_timers; i++ ) |
|---|
| | 353 | { |
|---|
| | 354 | if( p_obj->p_libvlc->pp_timers[i]->i_id == i_id ) |
|---|
| | 355 | { |
|---|
| | 356 | p_counter = p_obj->p_libvlc->pp_timers[i]; |
|---|
| 357 | 357 | break; |
|---|
| 358 | 358 | } |
|---|
| 359 | 359 | } |
|---|
| 360 | 360 | TimerDump( p_obj, p_counter, VLC_TRUE ); |
|---|
| 361 | | vlc_mutex_unlock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| | 361 | vlc_mutex_unlock( &p_obj->p_libvlc->timer_lock ); |
|---|
| 362 | 362 | } |
|---|
| 363 | 363 | |
|---|
| … | … | |
| 365 | 365 | { |
|---|
| 366 | 366 | int i; |
|---|
| 367 | | if( !p_obj->p_libvlc_global->b_stats ) return; |
|---|
| 368 | | vlc_mutex_lock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| 369 | | for ( i = 0 ; i< p_obj->p_libvlc_global->i_timers ; i++ ) |
|---|
| 370 | | TimerDump( p_obj, p_obj->p_libvlc_global->pp_timers[i], VLC_FALSE ); |
|---|
| 371 | | vlc_mutex_unlock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| | 367 | if( !p_obj->p_libvlc->b_stats ) return; |
|---|
| | 368 | vlc_mutex_lock( &p_obj->p_libvlc->timer_lock ); |
|---|
| | 369 | for ( i = 0 ; i< p_obj->p_libvlc->i_timers ; i++ ) |
|---|
| | 370 | TimerDump( p_obj, p_obj->p_libvlc->pp_timers[i], VLC_FALSE ); |
|---|
| | 371 | vlc_mutex_unlock( &p_obj->p_libvlc->timer_lock ); |
|---|
| 372 | 372 | } |
|---|
| 373 | 373 | |
|---|
| … | … | |
| 375 | 375 | { |
|---|
| 376 | 376 | int i; |
|---|
| 377 | | vlc_mutex_lock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| 378 | | for ( i = p_obj->p_libvlc_global->i_timers -1 ; i >= 0; i-- ) |
|---|
| 379 | | { |
|---|
| 380 | | counter_t *p_counter = p_obj->p_libvlc_global->pp_timers[i]; |
|---|
| 381 | | REMOVE_ELEM( p_obj->p_libvlc_global->pp_timers, p_obj->p_libvlc_global->i_timers, i ); |
|---|
| | 377 | vlc_mutex_lock( &p_obj->p_libvlc->timer_lock ); |
|---|
| | 378 | for ( i = p_obj->p_libvlc->i_timers -1 ; i >= 0; i-- ) |
|---|
| | 379 | { |
|---|
| | 380 | counter_t *p_counter = p_obj->p_libvlc->pp_timers[i]; |
|---|
| | 381 | REMOVE_ELEM( p_obj->p_libvlc->pp_timers, p_obj->p_libvlc->i_timers, i ); |
|---|
| 382 | 382 | stats_CounterClean( p_counter ); |
|---|
| 383 | 383 | } |
|---|
| 384 | | vlc_mutex_unlock( &p_obj->p_libvlc_global->timer_lock ); |
|---|
| | 384 | vlc_mutex_unlock( &p_obj->p_libvlc->timer_lock ); |
|---|
| 385 | 385 | } |
|---|
| 386 | 386 | |
|---|
| rf485214 |
r8923568 |
|
| 364 | 364 | p_access->i_writes++; |
|---|
| 365 | 365 | p_access->i_sent_bytes += p_buffer->i_buffer; |
|---|
| 366 | | if( p_access->p_libvlc_global->b_stats && p_access->i_writes % 30 == 0 ) |
|---|
| | 366 | if( p_access->p_libvlc->b_stats && p_access->i_writes % 30 == 0 ) |
|---|
| 367 | 367 | { |
|---|
| 368 | 368 | /* Access_out -> sout_instance -> input_thread_t */ |
|---|