rem: area = malloc(sizeof(vm_region));
add: area = _vm_create_reserved_region_struct(&addressSpace->virtual_map);
context: vm_reserve_address_range(aspace_id aid, void **_address, uint32 addressSpec, addr_t size){	vm_address_space *addressSpace;	vm_region *area;	status_t status = B_OK;	addressSpace = vm_get_aspace_by_id(aid);	if (addressSpace == NULL)		return ERR_VM_INVALID_ASPACE;	area = malloc(sizeof(vm_region));	if (area == NULL) {		status = B_NO_MEMORY;		goto err1;	}	area->id = -1;		// this marks it as reserved space	area->map = &addressSpace->virtual_map;	acquire_sem_etc(addressSpace->virtual_map.sem, WRITE_COUNT, 0, 0);	// check to see if this aspace has entered DELETE state	if (addressSpace->state == VM_ASPACE_STATE_DELETION) {		// okay, someone is trying to delete this aspace now, so we can't		// insert the region, so back out		status = ERR_VM_INVALID_ASPACE;		goto err2;	}	status = insert_area(addressSpace, _address, addressSpec, size, area);	if (status < B_OK)		goto err2;	// the region is now reserved!	release_sem_etc(addressSpace->virtual_map.sem, WRITE_COUNT, 0);	return B_OK;err2:	release_sem_etc(addressSpace->virtual_map.sem, WRITE_COUNT, 0);	free(area);err1:	vm_put_aspace(addressSpace);	return status;}