Ejemplo n.º 1
0
Archivo: lock.c Proyecto: mihawk/yatce
void rwlock_fini(rwlock_t* lock){
#ifdef USE_PTHREAD
  pthread_rwlock_destroy(lock);
  //  free(lock);
#elif defined  USE_ETHREAD
  erl_drv_rwlock_destroy(*lock);
#endif
};
Ejemplo n.º 2
0
void
exmpp_ht_destroy(struct exmpp_hashtable *ht)
{
	unsigned int i;
	struct exmpp_ht_entry *entry, *next;

	if (ht == NULL || ht->entries == NULL)
		return;

#if defined(USE_RWLOCK)
	erl_drv_rwlock_rwlock(ht->lock);
#endif

	for (i = 0; i < ht->length; ++i) {
		next = ht->entries[i];
		while (next != NULL) {
			entry = next;
			next = next->next;
			driver_free(entry->key);
			if (ht->free_value != NULL)
				ht->free_value(entry->value);
			driver_free(entry);
		}
	}

	driver_free(ht->entries);
	ht->entries = NULL;
	ht->entries_count = 0;
	ht->length = 0;

#if defined(USE_RWLOCK)
	erl_drv_rwlock_rwunlock(ht->lock);
	erl_drv_rwlock_destroy(ht->lock);
#endif

	driver_free(ht);
}
Ejemplo n.º 3
0
Archivo: erl_nif.c Proyecto: a5an0/otp
void enif_rwlock_destroy(ErlNifRWLock *rwlck) { erl_drv_rwlock_destroy(rwlck); }