Allocates a region of global memory in the 64-bit kernel.
The vm_galloc kernel service allocates memory from the kernel global memory pool on the 64-bit kernel. The allocation size is rounded up to the nearest 4K boundary. The default page protection key for global memory segments is 00 unless overridden with the V_UREAD flag.
The type field may have the following values, which may be combined:
Item | Description |
---|---|
V_WORKING | Required. Creates a working storage segment. |
V_SYSTEM | The new allocation is a global system area that does not belong to any application. Storage reference errors to this area will result in system crashes. |
V_UREAD | Overrides the default page protection of 00 and creates the new region with a default page protection of 01. |
V_NOEXEC | Pages in the region will have no-execute protection by default. Only supported on POWER4 and later hardware. |
The vm_galloc kernel service is intended for subsystems that have large data structures for which xmalloc is not the best choice for management. The kernel xmalloc heap itself does reside in global memory.
Item | Description |
---|---|
type | Flags that may be specified to control the allocation. |
size | Specifies the size, in bytes, of the desired allocation. |
eaddr | Pointer to where vm_galloc will return the start address of the allocated storage. |
The vm_galloc kernel service can be called from the process environment only.
Item | Description |
---|---|
0 | Successful completion. A new region was allocated, and its start address is returned at the address specified by the eaddr parameter. |
EINVAL | Invalid size or type specified. |
ENOSPC | Not enough space in the galloc heap to perform the allocation. |
ENOMEM | Insufficient resources available to satisfy the request. |