mirror of
https://gitlab.com/embeddable-common-lisp/ecl.git
synced 2026-04-27 11:40:45 -07:00
internal.h: fix ECL_RWLOCK conditionals
one part using ECL_RWLOCK-enabled features was only behind ECL_THREADS.
This commit is contained in:
parent
d9afb21775
commit
6b67cf5cad
1 changed files with 22 additions and 18 deletions
|
|
@ -367,20 +367,6 @@ extern void cl_write_object(cl_object x, cl_object stream);
|
|||
ECL_WITH_LOCK_BEGIN(the_env, cl_core.global_lock)
|
||||
# define ECL_WITH_GLOBAL_LOCK_END \
|
||||
ECL_WITH_LOCK_END
|
||||
# define ECL_WITH_GLOBAL_ENV_RDLOCK_BEGIN(the_env) { \
|
||||
const cl_env_ptr __ecl_pack_env = the_env; \
|
||||
ecl_disable_interrupts_env(__ecl_pack_env); \
|
||||
mp_get_rwlock_read_wait(cl_core.global_env_lock);
|
||||
# define ECL_WITH_GLOBAL_ENV_RDLOCK_END \
|
||||
mp_giveup_rwlock_read(cl_core.global_env_lock); \
|
||||
ecl_enable_interrupts_env(__ecl_pack_env); }
|
||||
# define ECL_WITH_GLOBAL_ENV_WRLOCK_BEGIN(the_env) { \
|
||||
const cl_env_ptr __ecl_pack_env = the_env; \
|
||||
ecl_disable_interrupts_env(__ecl_pack_env); \
|
||||
mp_get_rwlock_write_wait(cl_core.global_env_lock);
|
||||
# define ECL_WITH_GLOBAL_ENV_WRLOCK_END \
|
||||
mp_giveup_rwlock_write(cl_core.global_env_lock); \
|
||||
ecl_enable_interrupts_env(__ecl_pack_env); }
|
||||
# define ECL_WITH_LOCK_BEGIN(the_env,lock) { \
|
||||
const cl_env_ptr __ecl_the_env = the_env; \
|
||||
const cl_object __ecl_the_lock = lock; \
|
||||
|
|
@ -401,16 +387,34 @@ extern void cl_write_object(cl_object x, cl_object stream);
|
|||
#else
|
||||
# define ECL_WITH_GLOBAL_LOCK_BEGIN(the_env)
|
||||
# define ECL_WITH_GLOBAL_LOCK_END
|
||||
# define ECL_WITH_GLOBAL_ENV_RDLOCK_BEGIN(the_env)
|
||||
# define ECL_WITH_GLOBAL_ENV_RDLOCK_END
|
||||
# define ECL_WITH_GLOBAL_ENV_WRLOCK_BEGIN(the_env)
|
||||
# define ECL_WITH_GLOBAL_ENV_WRLOCK_END
|
||||
# define ECL_WITH_LOCK_BEGIN(the_env,lock)
|
||||
# define ECL_WITH_LOCK_END
|
||||
# define ECL_WITH_SPINLOCK_BEGIN(the_env,lock)
|
||||
# define ECL_WITH_SPINLOCK_END
|
||||
#endif /* ECL_THREADS */
|
||||
|
||||
#ifdef ECL_RWLOCK
|
||||
# define ECL_WITH_GLOBAL_ENV_RDLOCK_BEGIN(the_env) { \
|
||||
const cl_env_ptr __ecl_pack_env = the_env; \
|
||||
ecl_disable_interrupts_env(__ecl_pack_env); \
|
||||
mp_get_rwlock_read_wait(cl_core.global_env_lock);
|
||||
# define ECL_WITH_GLOBAL_ENV_RDLOCK_END \
|
||||
mp_giveup_rwlock_read(cl_core.global_env_lock); \
|
||||
ecl_enable_interrupts_env(__ecl_pack_env); }
|
||||
# define ECL_WITH_GLOBAL_ENV_WRLOCK_BEGIN(the_env) { \
|
||||
const cl_env_ptr __ecl_pack_env = the_env; \
|
||||
ecl_disable_interrupts_env(__ecl_pack_env); \
|
||||
mp_get_rwlock_write_wait(cl_core.global_env_lock);
|
||||
# define ECL_WITH_GLOBAL_ENV_WRLOCK_END \
|
||||
mp_giveup_rwlock_write(cl_core.global_env_lock); \
|
||||
ecl_enable_interrupts_env(__ecl_pack_env); }
|
||||
#else
|
||||
# define ECL_WITH_GLOBAL_ENV_RDLOCK_BEGIN(the_env)
|
||||
# define ECL_WITH_GLOBAL_ENV_RDLOCK_END
|
||||
# define ECL_WITH_GLOBAL_ENV_WRLOCK_BEGIN(the_env)
|
||||
# define ECL_WITH_GLOBAL_ENV_WRLOCK_END
|
||||
#endif /* ECL_RWLOCK */
|
||||
|
||||
#ifdef ECL_THREADS
|
||||
# define AO_REQUIRE_CAS
|
||||
# ifdef ECL_LIBATOMIC_OPS_H
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue