diff options
author | Benny Prijono <bennylp@teluu.com> | 2005-11-01 21:46:17 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2005-11-01 21:46:17 +0000 |
commit | 2659094addd65fee3d26bc2fe21f4b42d825bdfb (patch) | |
tree | 373c7a58cefb6d06b9bdcb842628c3cfec2fafbe /pjlib/src/pj/os_core_unix.c | |
parent | 7520eb2058c85109a0b137b0d0f0487a149c9a0c (diff) |
Changed atomic interface and fixed bugs in echo test client
git-svn-id: http://svn.pjsip.org/repos/pjproject/main@5 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/src/pj/os_core_unix.c')
-rw-r--r-- | pjlib/src/pj/os_core_unix.c | 41 |
1 files changed, 21 insertions, 20 deletions
diff --git a/pjlib/src/pj/os_core_unix.c b/pjlib/src/pj/os_core_unix.c index 4b0de399..18f4ded2 100644 --- a/pjlib/src/pj/os_core_unix.c +++ b/pjlib/src/pj/os_core_unix.c @@ -526,23 +526,17 @@ PJ_DEF(pj_status_t) pj_atomic_destroy( pj_atomic_t *atomic_var ) /* * pj_atomic_set() */ -PJ_DEF(pj_atomic_value_t) pj_atomic_set(pj_atomic_t *atomic_var, - pj_atomic_value_t value) +PJ_DEF(void) pj_atomic_set(pj_atomic_t *atomic_var, pj_atomic_value_t value) { - pj_atomic_value_t oldval; - PJ_CHECK_STACK(); - PJ_ASSERT_RETURN(atomic_var, 0); #if PJ_HAS_THREADS pj_mutex_lock( atomic_var->mutex ); #endif - oldval = atomic_var->value; atomic_var->value = value; #if PJ_HAS_THREADS pj_mutex_unlock( atomic_var->mutex); #endif - return oldval; } /* @@ -553,7 +547,6 @@ PJ_DEF(pj_atomic_value_t) pj_atomic_get(pj_atomic_t *atomic_var) pj_atomic_value_t oldval; PJ_CHECK_STACK(); - PJ_ASSERT_RETURN(atomic_var, 0); #if PJ_HAS_THREADS pj_mutex_lock( atomic_var->mutex ); @@ -568,41 +561,49 @@ PJ_DEF(pj_atomic_value_t) pj_atomic_get(pj_atomic_t *atomic_var) /* * pj_atomic_inc() */ -PJ_DEF(pj_atomic_value_t) pj_atomic_inc(pj_atomic_t *atomic_var) +PJ_DEF(void) pj_atomic_inc(pj_atomic_t *atomic_var) { - pj_atomic_value_t newval; - PJ_CHECK_STACK(); - PJ_ASSERT_RETURN(atomic_var, 0); #if PJ_HAS_THREADS pj_mutex_lock( atomic_var->mutex ); #endif - newval = ++atomic_var->value; + ++atomic_var->value; #if PJ_HAS_THREADS pj_mutex_unlock( atomic_var->mutex); #endif - return newval; } /* * pj_atomic_dec() */ -PJ_DEF(pj_atomic_value_t) pj_atomic_dec(pj_atomic_t *atomic_var) +PJ_DEF(void) pj_atomic_dec(pj_atomic_t *atomic_var) { - pj_atomic_value_t newval; - PJ_CHECK_STACK(); - PJ_ASSERT_RETURN(atomic_var, 0); #if PJ_HAS_THREADS pj_mutex_lock( atomic_var->mutex ); #endif - newval = --atomic_var->value; + --atomic_var->value; #if PJ_HAS_THREADS pj_mutex_unlock( atomic_var->mutex); #endif - return newval; +} + +/* + * pj_atomic_add() + */ +PJ_DEF(void) pj_atomic_add( pj_atomic_t *atomic_var, pj_atomic_value_t value ) +{ +#if PJ_HAS_THREADS + pj_mutex_lock(atomic_var->mutex); +#endif + + atomic_var->value += value; + +#if PJ_HAS_THREADS + pj_mutex_unlock(atomic_var->mutex); +#endif } |