int ldap_pvt_thread_rdwr_active(ldap_pvt_thread_rdwr_t *rwlock) { struct ldap_int_thread_rdwr_s *rw; assert( rwlock != NULL ); rw = *rwlock; assert( rw != NULL ); assert( rw->ltrw_valid == LDAP_PVT_THREAD_RDWR_VALID ); assert( rw->ltrw_w_active >= 0 ); assert( rw->ltrw_w_wait >= 0 ); assert( rw->ltrw_r_active >= 0 ); assert( rw->ltrw_r_wait >= 0 ); return(ldap_pvt_thread_rdwr_readers(rwlock) + ldap_pvt_thread_rdwr_writers(rwlock)); }
int id2entry_delete( Backend *be, Entry *e ) { struct ldbminfo *li = (struct ldbminfo *) be->be_private; DBCache *db; Datum key; int rc; #ifndef WORDS_BIGENDIAN ID id; #endif #ifdef NEW_LOGGING LDAP_LOG( INDEX, ENTRY, "id2entry_delete: (%s)%ld\n", e->e_dn, e->e_id, 0 ); #else Debug(LDAP_DEBUG_TRACE, "=> id2entry_delete( %ld, \"%s\" )\n", e->e_id, e->e_dn, 0 ); #endif #ifdef notdef #ifdef LDAP_RDWR_DEBUG /* check for writer lock */ assert(ldap_pvt_thread_rdwr_writers(&e->e_rdwr) == 1); #endif #endif ldbm_datum_init( key ); if ( (db = ldbm_cache_open( be, "id2entry", LDBM_SUFFIX, LDBM_WRCREAT )) == NULL ) { #ifdef NEW_LOGGING LDAP_LOG( INDEX, ERR, "id2entry_delete: could not open/create id2entry%s\n", LDBM_SUFFIX, 0, 0 ); #else Debug( LDAP_DEBUG_ANY, "Could not open/create id2entry%s\n", LDBM_SUFFIX, 0, 0 ); #endif return( -1 ); } if ( cache_delete_entry( &li->li_cache, e ) != 0 ) { #ifdef NEW_LOGGING LDAP_LOG( INDEX, ERR, "id2entry_delete: Could not delete (%s)%ld from cache\n", e->e_dn, e->e_id, 0 ); #else Debug(LDAP_DEBUG_ANY, "could not delete %ld (%s) from cache\n", e->e_id, e->e_dn, 0 ); #endif } #ifdef WORDS_BIGENDIAN key.dptr = (char *) &e->e_id; #else id = htonl(e->e_id); key.dptr = (char *) &id; #endif key.dsize = sizeof(ID); rc = ldbm_cache_delete( db, key ); ldbm_cache_close( be, db ); #ifdef NEW_LOGGING LDAP_LOG( INDEX, ENTRY, "id2entry_delete: return %d\n", rc, 0, 0 ); #else Debug( LDAP_DEBUG_TRACE, "<= id2entry_delete %d\n", rc, 0, 0 ); #endif return( rc ); }