void *mali_descriptor_mapping_free(mali_descriptor_mapping *map, int descriptor) { void *old_value = NULL; mali_mem_allocation *tmp_descriptor; struct mali_session_data *session; _mali_osk_mutex_rw_wait(map->lock, _MALI_OSK_LOCKMODE_RW); if ((descriptor >= 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage)) { old_value = map->table->mappings[descriptor]; map->table->mappings[descriptor] = NULL; _mali_osk_clear_nonatomic_bit(descriptor, map->table->usage); } if (NULL != old_value) { tmp_descriptor = (mali_mem_allocation *)old_value; session = tmp_descriptor->session; MALI_DEBUG_ASSERT_POINTER(session); MALI_DEBUG_ASSERT(session->mali_mem_array[tmp_descriptor->type] >= tmp_descriptor->size); session->mali_mem_array[tmp_descriptor->type] -= tmp_descriptor->size; } _mali_osk_mutex_rw_signal(map->lock, _MALI_OSK_LOCKMODE_RW); return old_value; }
void ump_descriptor_mapping_free(ump_descriptor_mapping *map, int descriptor) { _mali_osk_mutex_rw_wait(map->lock, _MALI_OSK_LOCKMODE_RW); if ((descriptor > 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage)) { map->table->mappings[descriptor] = NULL; _mali_osk_clear_nonatomic_bit(descriptor, map->table->usage); } _mali_osk_mutex_rw_signal(map->lock, _MALI_OSK_LOCKMODE_RW); }
void *mali_descriptor_mapping_free(mali_descriptor_mapping * map, int descriptor) { void *old_value = NULL; _mali_osk_mutex_rw_wait(map->lock, _MALI_OSK_LOCKMODE_RW); if ( (descriptor >= 0) && (descriptor < map->current_nr_mappings) && _mali_osk_test_bit(descriptor, map->table->usage) ) { old_value = map->table->mappings[descriptor]; map->table->mappings[descriptor] = NULL; _mali_osk_clear_nonatomic_bit(descriptor, map->table->usage); } _mali_osk_mutex_rw_signal(map->lock, _MALI_OSK_LOCKMODE_RW); return old_value; }