From baa4eb02636fc266749780c4b1ed4b017b96de36 Mon Sep 17 00:00:00 2001 From: Neelima P S Date: Mon, 25 May 2026 03:52:22 +0000 Subject: [PATCH] reverting RCU changes back (#47) Co-authored-by: neelimap Reviewed-on: http://13.234.246.121:3000/Neominds/ossl35vx69/pulls/47 Co-authored-by: Neelima P S Co-committed-by: Neelima P S --- .../openssl-3.5.0/include/openssl/vxrcu.c | 38 +++++-------------- 1 file changed, 9 insertions(+), 29 deletions(-) diff --git a/vxworks-6.9/target/src/openssl/OPENSSL/openssl-3.5.0/include/openssl/vxrcu.c b/vxworks-6.9/target/src/openssl/OPENSSL/openssl-3.5.0/include/openssl/vxrcu.c index 6a7c0d1a..7c5a6d78 100644 --- a/vxworks-6.9/target/src/openssl/OPENSSL/openssl-3.5.0/include/openssl/vxrcu.c +++ b/vxworks-6.9/target/src/openssl/OPENSSL/openssl-3.5.0/include/openssl/vxrcu.c @@ -1,3 +1,6 @@ +#ifndef RCU_VX69_H +#define RCU_VX69_H + #include #include #include "../crypto/rcu_internal.h" @@ -6,8 +9,6 @@ typedef struct crypto_rwlock_st { SEM_ID sem; }CRYPTO_RWLOCK_VX; -static CRYPTO_RWLOCK_VX *local_rcu_rwlock; -static int is_rwlock_init = 0; /*---------- Atomic routines ----------*/ int CRYPTO_atomic_load_int(int *val, int *ret, CRYPTO_RWLOCK *lock) @@ -47,30 +48,14 @@ CRYPTO_RCU_LOCK *ossl_rcu_lock_new(int num_writers, OSSL_LIB_CTX *ctx) if (!lock) return NULL; - lock->writer_lock = semBCreate (SEM_Q_PRIORITY | - SEM_DELETE_SAFE | SEM_INVERSION_SAFE, - SEM_EMPTY); + lock->writer_lock = semBCreate (SEM_Q_PRIORITY | SEM_DELETE_SAFE, SEM_EMPTY); lock->active_readers = 0; - - if (!is_rwlock_init) - { - local_rcu_rwlock->sem = semBCreate (SEM_Q_PRIORITY | - SEM_DELETE_SAFE | SEM_INVERSION_SAFE, - SEM_EMPTY); - is_rwlock_init = 1; - } return lock; } void ossl_rcu_lock_free(CRYPTO_RCU_LOCK *lock) { - if (is_rwlock_init) - { - semDelete (local_rcu_rwlock->sem); - is_rwlock_init = 0; - } - if (!lock) return; semDelete (lock->writer_lock); @@ -105,17 +90,13 @@ void *ossl_rcu_uptr_deref(void **p) void ossl_rcu_assign_uptr(void **p, void **v) { - void *ret, *val; - ret = p; - val = v; - /* publish new pointer immediately */ - CRYPTO_atomic_load_int (val, ret, local_rcu_rwlock); + *p = *v; + } void ossl_synchronize_rcu(CRYPTO_RCU_LOCK *lock) { - int retVal=0; struct rcu_cb_item *cb_items, *tmpcb; semBTake (lock->writer_lock, WAIT_FOREVER); @@ -124,10 +105,8 @@ void ossl_synchronize_rcu(CRYPTO_RCU_LOCK *lock) semBGive (lock->writer_lock); /* Wait until all readers finish */ - do { - CRYPTO_atomic_load_int(&(lock->active_readers), &retVal, local_rcu_rwlock); - taskDelay(0); - }while (retVal > 0); + while (lock->active_readers > 0) + taskDelay(1); /* handle any callbacks that we have */ while (cb_items != NULL) { @@ -156,3 +135,4 @@ int ossl_rcu_call(CRYPTO_RCU_LOCK *lock, rcu_cb_fn cb, void *data) return 1; } +#endif