Remove the two-phase way of creating virtual memory areas (first asking for a mappable address and then mapping it) which was prone to race conditions when two or more calls to as_get_mappable_page() and as_area_create() were interleaved. This for example caused the e1k driver to randomly fail.
The memory area related syscalls and IPC calls have all been altered to accept a special value (void *) -1, representing a demand to atomically search for a mappable address space "hole" and map to it.
IPC_M_SHARE_OUT: the destination address space area is supplied by the kernel, the callee only specifies the lower bound
(the address is returned to the callee via a pointer in an IPC reply argument)
IPC_M_SHARE_IN: the destination address space ares is supplied by the kernel, the callee only specifies the lower bound
(the address is returned to the caller as usual via an IPC argument)
SYS_AS_GET_UNMAPPED_AREA was removed
dummy implementations of SYS_PHYSMEM_UNMAP and SYS_IOSPACE_DISABLE were added for the sake of symmetry (they do nothing yet)
SYS_PHYSMEM_MAP and SYS_DMAMEM_MAP were altered to accept (void *) -1 as address space area base and a lower bound
kernel as_area_create() and as_area_share() were altered to accept (void *) -1 as address space area base and a lower bound
uspace libraries and programs were altered to reflect the new API