[haiku-development] Re: _kern_reserve_address_range

  • From: Tim Kelly <gtkelly@xxxxxxxxxxxxxxxxx>
  • To: haiku-development@xxxxxxxxxxxxx
  • Date: Tue, 15 Mar 2016 18:52:55 -0400

In tracking this further, I find that _kern_reserve_address_range can return one of the following values:

directly
B_BAD_ADDRESS
B_BAD_VALUE

from vm_reserve_address_range:
B_BAD_VALUE
B_BAD_TEAM_ID

but in src/system/runtime_loader/images.cpp

if (_kern_reserve_address_range(&reservedAddress, addressSpecifier,
                        reservedSize) != B_OK)
                return B_NO_MEMORY;

In the case of B_BAD_TEAM_ID, it originates from:

src/system/kernel/vm/vm.cpp

vm_reserve_address_range(team_id team, void** _address, uint32 addressSpec,
        addr_t size, uint32 flags)
{
        if (size == 0)
                return B_BAD_VALUE;

        AddressSpaceWriteLocker locker(team);
        if (!locker.IsLocked())
                return B_BAD_TEAM_ID;


Possibly this is important information that is getting lost, even if it is rarely encountered.

tim

Other related posts: