Maps files or devices into memory. This system call can be used for dynamic memory allocation.
Arguments
eax |
192 |
ebx |
Address where pages will be mapped. If ebx is non-zero, it is used as a hint to the system. (As a convenience to the system, the actual address of the region may differ from the address supplied.) If ebx is zero, an address will be selected by the system. |
ecx |
Size of the mapped region. |
edx |
Protection flags:
PROT_EXEC |
Pages may be executed. |
PROT_READ |
Pages may be read. |
PROT_WRITE |
Pages may be written. |
|
|
esi |
Mode flags:
MAP_ANON |
Map anonymous memory not associated with any specific file. The file descriptor used for creating MAP_ANON regions is used only for naming, and may be specified as -1 if no name is associated with the region. |
MAP_FILE |
Mapped from a regular file or character-special device memory. (This is the default mapping type, and need not be specified.) |
MAP_FIXED |
Do not permit the system to select a different address than the one specified. If the specified address cannot be used, sys_mmap will fail. If MAP_FIXED is specified, ebx must be a multiple of the pagesize. Use of this option is discouraged. |
MAP_HASSEMAPHORE |
Notify the kernel that the region may contain semaphores and that special handling may be necessary. |
MAP_PRIVATE |
Modifications are private. |
MAP_SHARED |
Modifications are shared. |
|
|
edi |
File descriptor. See mode flags descriptions for more info. |
ebp |
Offset (within the file) of the data to be mapped. It's ignored if MAP_ANON is specified. |
Return values
If the system call succeeds the return value is a pointer to the mapped region.
If the system call fails the return value is one of the following errno values:
-EACCES |
The flag PROT_READ was specified as part of the edx and edi was not open for reading. The flags PROT_WRITE and MAP_SHARED were specified as part of the esi and edx parameters and edi was not open for writing. |
-EBADF |
edi is not a valid open file descriptor. |
-EINVAL |
MAP_FIXED was specified and the parameter was not page aligned. edi did not reference a regular or character special file. |
-ENOMEM |
MAP_FIXED was specified and the ecx parameter wasn't available. MAP_ANON was specified and insufficient memory was available. |
|
Remarks
To unmap pages sys_munmap should be used.
Compatibility
n/a |