Ignore:
Timestamp:
Nov 1, 2005 9:46:17 PM (19 years ago)
Author:
bennylp
Message:

Changed atomic interface and fixed bugs in echo test client

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/main/pjlib/src/pj/os_core_unix.c

    r4 r5  
    527527 * pj_atomic_set() 
    528528 */ 
    529 PJ_DEF(pj_atomic_value_t) pj_atomic_set(pj_atomic_t *atomic_var,  
    530                                         pj_atomic_value_t value) 
    531 { 
    532     pj_atomic_value_t oldval; 
    533      
    534     PJ_CHECK_STACK(); 
    535     PJ_ASSERT_RETURN(atomic_var, 0); 
     529PJ_DEF(void) pj_atomic_set(pj_atomic_t *atomic_var, pj_atomic_value_t value) 
     530{ 
     531    PJ_CHECK_STACK(); 
    536532 
    537533#if PJ_HAS_THREADS 
    538534    pj_mutex_lock( atomic_var->mutex ); 
    539535#endif 
    540     oldval = atomic_var->value; 
    541536    atomic_var->value = value; 
    542537#if PJ_HAS_THREADS 
    543538    pj_mutex_unlock( atomic_var->mutex); 
    544539#endif  
     540} 
     541 
     542/* 
     543 * pj_atomic_get() 
     544 */ 
     545PJ_DEF(pj_atomic_value_t) pj_atomic_get(pj_atomic_t *atomic_var) 
     546{ 
     547    pj_atomic_value_t oldval; 
     548     
     549    PJ_CHECK_STACK(); 
     550 
     551#if PJ_HAS_THREADS 
     552    pj_mutex_lock( atomic_var->mutex ); 
     553#endif 
     554    oldval = atomic_var->value; 
     555#if PJ_HAS_THREADS 
     556    pj_mutex_unlock( atomic_var->mutex); 
     557#endif 
    545558    return oldval; 
    546559} 
    547560 
    548561/* 
    549  * pj_atomic_get() 
    550  */ 
    551 PJ_DEF(pj_atomic_value_t) pj_atomic_get(pj_atomic_t *atomic_var) 
    552 { 
    553     pj_atomic_value_t oldval; 
    554      
    555     PJ_CHECK_STACK(); 
    556     PJ_ASSERT_RETURN(atomic_var, 0); 
     562 * pj_atomic_inc() 
     563 */ 
     564PJ_DEF(void) pj_atomic_inc(pj_atomic_t *atomic_var) 
     565{ 
     566    PJ_CHECK_STACK(); 
    557567 
    558568#if PJ_HAS_THREADS 
    559569    pj_mutex_lock( atomic_var->mutex ); 
    560570#endif 
    561     oldval = atomic_var->value; 
     571    ++atomic_var->value; 
    562572#if PJ_HAS_THREADS 
    563573    pj_mutex_unlock( atomic_var->mutex); 
    564574#endif 
    565     return oldval; 
    566 } 
    567  
    568 /* 
    569  * pj_atomic_inc() 
    570  */ 
    571 PJ_DEF(pj_atomic_value_t) pj_atomic_inc(pj_atomic_t *atomic_var) 
    572 { 
    573     pj_atomic_value_t newval; 
    574  
    575     PJ_CHECK_STACK(); 
    576     PJ_ASSERT_RETURN(atomic_var, 0); 
     575} 
     576 
     577/* 
     578 * pj_atomic_dec() 
     579 */ 
     580PJ_DEF(void) pj_atomic_dec(pj_atomic_t *atomic_var) 
     581{ 
     582    PJ_CHECK_STACK(); 
    577583 
    578584#if PJ_HAS_THREADS 
    579585    pj_mutex_lock( atomic_var->mutex ); 
    580586#endif 
    581     newval = ++atomic_var->value; 
     587    --atomic_var->value; 
    582588#if PJ_HAS_THREADS 
    583589    pj_mutex_unlock( atomic_var->mutex); 
    584590#endif 
    585     return newval; 
    586 } 
    587  
    588 /* 
    589  * pj_atomic_dec() 
    590  */ 
    591 PJ_DEF(pj_atomic_value_t) pj_atomic_dec(pj_atomic_t *atomic_var) 
    592 { 
    593     pj_atomic_value_t newval; 
    594  
    595     PJ_CHECK_STACK(); 
    596     PJ_ASSERT_RETURN(atomic_var, 0); 
    597  
    598 #if PJ_HAS_THREADS 
    599     pj_mutex_lock( atomic_var->mutex ); 
    600 #endif 
    601     newval = --atomic_var->value; 
    602 #if PJ_HAS_THREADS 
    603     pj_mutex_unlock( atomic_var->mutex); 
    604 #endif 
    605     return newval; 
     591} 
     592 
     593/* 
     594 * pj_atomic_add() 
     595 */  
     596PJ_DEF(void) pj_atomic_add( pj_atomic_t *atomic_var, pj_atomic_value_t value ) 
     597{ 
     598#if PJ_HAS_THREADS 
     599    pj_mutex_lock(atomic_var->mutex); 
     600#endif 
     601     
     602    atomic_var->value += value; 
     603 
     604#if PJ_HAS_THREADS 
     605    pj_mutex_unlock(atomic_var->mutex); 
     606#endif 
    606607} 
    607608 
Note: See TracChangeset for help on using the changeset viewer.