mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-01-03 13:40:37 -05:00
Add Pth specific r/w lock implementation.
This commit is contained in:
parent
e5ebc553ac
commit
107e99e302
2 changed files with 47 additions and 0 deletions
|
|
@ -89,6 +89,9 @@ typedef pth_t ldap_int_thread_t;
|
|||
typedef pth_mutex_t ldap_int_thread_mutex_t;
|
||||
typedef pth_cond_t ldap_int_thread_cond_t;
|
||||
|
||||
#define LDAP_THREAD_HAVE_RDWR 1
|
||||
typedef pth_rwlock_t ldap_pvt_thread_rdwr_t;
|
||||
|
||||
LDAP_END_DECL
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -140,4 +140,48 @@ ldap_int_thread_mutex_trylock( ldap_int_thread_mutex_t *mutex )
|
|||
return( pth_mutex_acquire( mutex, 1, NULL ) );
|
||||
}
|
||||
|
||||
#ifdef LDAP_THREAD_HAVE_RDWR
|
||||
int
|
||||
ldap_pvt_thread_rdwr_init( ldap_pvt_thread_rdwr_t *rw )
|
||||
{
|
||||
return pth_rwlock_init( rw );
|
||||
}
|
||||
|
||||
int
|
||||
ldap_pvt_thread_rdwr_destroy( ldap_pvt_thread_rdwr_t *rw )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ldap_pvt_thread_rdwr_rlock( ldap_pvt_thread_rdwr_t *rw )
|
||||
{
|
||||
return pth_rwlock_acquire( rw, PTH_RWLOCK_RD, 0, NULL );
|
||||
}
|
||||
|
||||
int ldap_pvt_thread_rdwr_rtrylock( ldap_pvt_thread_rdwr_t *rw )
|
||||
{
|
||||
return pth_rwlock_acquire( rw, PTH_RWLOCK_RD, 1, NULL );
|
||||
}
|
||||
|
||||
int ldap_pvt_thread_rdwr_runlock( ldap_pvt_thread_rdwr_t *rw )
|
||||
{
|
||||
return pth_rwlock_release( rw );
|
||||
}
|
||||
|
||||
int ldap_pvt_thread_rdwr_wlock( ldap_pvt_thread_rdwr_t *rw )
|
||||
{
|
||||
return pth_rwlock_acquire( rw, PTH_RWLOCK_RW, 0, NULL );
|
||||
}
|
||||
|
||||
int ldap_pvt_thread_rdwr_wtrylock( ldap_pvt_thread_rdwr_t *rw )
|
||||
{
|
||||
return pth_rwlock_acquire( rw, PTH_RWLOCK_RW, 1, NULL );
|
||||
}
|
||||
|
||||
int ldap_pvt_thread_rdwr_wunlock( ldap_pvt_thread_rdwr_t *rw )
|
||||
{
|
||||
return pth_rwlock_release( rw );
|
||||
}
|
||||
|
||||
#endif /* LDAP_THREAD_HAVE_RDWR */
|
||||
#endif /* HAVE_GNU_PTH */
|
||||
|
|
|
|||
Loading…
Reference in a new issue