diff --git a/vxworks-6.9/target/src/openssl/OPENSSL/openssl-3.5.0/crypto/vxrcu.c b/vxworks-6.9/target/src/openssl/OPENSSL/openssl-3.5.0/crypto/vxrcu.c index 700b4650..bd278f16 100644 --- a/vxworks-6.9/target/src/openssl/OPENSSL/openssl-3.5.0/crypto/vxrcu.c +++ b/vxworks-6.9/target/src/openssl/OPENSSL/openssl-3.5.0/crypto/vxrcu.c @@ -1,6 +1,10 @@ +#include +#include #include #include #include +#include + static CRYPTO_RWLOCK_VX *local_rcu_rwlock = NULL; static int is_rwlock_init = 0; @@ -57,6 +61,7 @@ CRYPTO_RCU_LOCK *ossl_rcu_lock_new(int num_writers, OSSL_LIB_CTX *ctx) ERR_print_errors_fp(stderr); return NULL; } + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_lock_new:: allocated memory for lock.\n", taskIdSelf()); lock->writer_lock = semMCreate (SEM_Q_PRIORITY | SEM_DELETE_SAFE | SEM_INVERSION_SAFE); if (!(lock->writer_lock)) @@ -65,6 +70,7 @@ CRYPTO_RCU_LOCK *ossl_rcu_lock_new(int num_writers, OSSL_LIB_CTX *ctx) ERR_add_error_data(1, "ossl_rcu_lock_new:: semMCreate failed for writer_lock\n"); ERR_print_errors_fp(stderr); } + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_lock_new:: created semaphore for writer_lock.\n", taskIdSelf()); lock->active_readers = 0; @@ -78,6 +84,7 @@ CRYPTO_RCU_LOCK *ossl_rcu_lock_new(int num_writers, OSSL_LIB_CTX *ctx) ERR_print_errors_fp(stderr); return NULL; } + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_lock_new:: allocated memory for local_rcu_rwlock.\n", taskIdSelf()); memset (local_rcu_rwlock, sizeof (CRYPTO_RWLOCK_VX), 0); @@ -90,8 +97,11 @@ CRYPTO_RCU_LOCK *ossl_rcu_lock_new(int num_writers, OSSL_LIB_CTX *ctx) } is_rwlock_init = 1; + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_lock_new:: created semaphore for local_rcu_rwlock and set is_rwlock_init=1.\n", + taskIdSelf()); } - + + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_lock_new:: done.\n", taskIdSelf()); return lock; } @@ -104,6 +114,7 @@ void ossl_rcu_lock_free(CRYPTO_RCU_LOCK *lock) local_rcu_rwlock = NULL; is_rwlock_init = 0; } + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_lock_free:: freed local_rcu_rwlock.\n", taskIdSelf()); if (!lock) { @@ -113,33 +124,41 @@ void ossl_rcu_lock_free(CRYPTO_RCU_LOCK *lock) return; } + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_lock_free:: deleting writer_lock and freeing lock.\n", taskIdSelf()); semDelete (lock->writer_lock); free(lock); + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_lock_free:: done.\n", taskIdSelf()); } void ossl_rcu_read_lock(CRYPTO_RCU_LOCK *lock) { vxAtomicInc (&(lock->active_readers)); + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_read_lock:: done.\n", taskIdSelf()); } void ossl_rcu_read_unlock(CRYPTO_RCU_LOCK *lock) { vxAtomicDec (&(lock->active_readers)); + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_read_unlock:: done.\n", taskIdSelf()); } void ossl_rcu_write_lock(CRYPTO_RCU_LOCK *lock) { semMTake (lock->writer_lock, WAIT_FOREVER); + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_write_lock:: done.\n", taskIdSelf()); } void ossl_rcu_write_unlock(CRYPTO_RCU_LOCK *lock) { semMGive (lock->writer_lock); + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_write_unlock:: done.\n", taskIdSelf()); } void *ossl_rcu_uptr_deref(void **p) { /* readers just dereference safely */ + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_uptr_deref:: returning dereferenced pointer.\n", + taskIdSelf()); return *p; } @@ -152,6 +171,7 @@ void ossl_rcu_assign_uptr(void **p, void **v) /* publish new pointer immediately */ CRYPTO_atomic_load_int(val, ret, local_rcu_rwlock); + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_assign_uptr:: done.\n", taskIdSelf()); } void ossl_synchronize_rcu(CRYPTO_RCU_LOCK *lock) @@ -179,6 +199,8 @@ void ossl_synchronize_rcu(CRYPTO_RCU_LOCK *lock) tmpcb->fn(tmpcb->data); OPENSSL_free(tmpcb); } + + OSSL_TRACE1 (RCU, "[%08x] ossl_synchronize_rcu:: done.\n", taskIdSelf()); } int ossl_rcu_call(CRYPTO_RCU_LOCK *lock, rcu_cb_fn cb, void *data) @@ -206,6 +228,7 @@ int ossl_rcu_call(CRYPTO_RCU_LOCK *lock, rcu_cb_fn cb, void *data) new->next = lock->cb_items; lock->cb_items = new; + OSSL_TRACE1 (RCU, "[%08x] ossl_rcu_call:: done.\n", taskIdSelf()); return 1; }