add debug trace in vxrcu.c (#71)

Reviewed-on: http://13.234.246.121:3000/Neominds/ossl35vx69/pulls/71
Co-authored-by: siddhant <siddhant.singh@neominds.in>
Co-committed-by: siddhant <siddhant.singh@neominds.in>
This commit is contained in:
2026-07-30 20:45:02 +05:30
committed by neelimap
parent 4abf671aa0
commit a263b7da47
@@ -1,6 +1,10 @@
#include <string.h>
#include <taskLibCommon.h>
#include <openssl/crypto.h>
#include <openssl/vxrcu.h>
#include <openssl/err.h>
#include <openssl/trace.h>
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;
}