sgi_use_anyaddr(1)
sgi_use_anyaddr - disable reserved range for auto-placed mappings
As shipped in IRIX 6.5.22. Added in IRIX 6.5.15.
NAME sgi_use_anyaddr - disable reserved range for auto-placed mappings SYNOPSIS sgi_use_anyaddr command [arguments] DESCRIPTION sgi_use_anyaddr executes command with the reserved range of the virtual address space (from 0x30000000 to 0x40000000) disabled. Normally, the kernel does not auto-place mappings made by mmap(2) and shmat(2) in the reserved range. By disabling the reserved range with sgi_use_anyaddr, the kernel is permitted to use any available virtual address for mapping requests made by command. sgi_use_anyaddr is implemented by invoking syssgi(2) with request parameter SGI_UNSUPPORTED_MAP_RESERVED_RANGE and then performing an exec of command. The effect of this option is the same as if MAP_SGI_ANYADDR and SHM_SGI_ANYADDR were added to all future calls to mmap(2) and shmat(2) respectively by command. Note that this syssgi option is inherited across fork and exec, so command and all its descendants will be affected by this. As described in mmap(2), the kernel chooses a virtual address for a new mapping created by mmap(2) or shmat(2) when zero is passed as the attach address. When the kernel auto-places a mapping in this manner, it is guaranteed that it will not place the mapping in the reserved range. The only mappings that can be placed in the reserved range are those where the user explicitly specifies an attach address that is in the reserved range. The reserved range was originally created in the earlier 90's by a MIPS/UNIX standards body at the request of application writers. The application writers wanted a portion of the virtual address space where they could be assured they could place their own mappings via mmap(2) and shmat(2) without the risk of overlapping other mappings placed by the kernel. A 256 MB region from 0x30000000 to 0x40000000 was reserved for use by applications to use by specifying an explicit attach address with mmap(2) or shmat(2). It is guaranteed the kernel will never auto-place a mapping in this range when zero is passed as the attach address to mmap(2) and shmat(2) because this range has been reserved for applications that specify explicit attach addresses in this range. At the time the reserved range was created, applications were still relatively small by today's standards, so having this 256 MB hole in the middle of the 2 GB user virtual address space was not an issue. Application program size has grown substantially over the years and some applications find they can no longer easily fit in the 2 GB address space available when running in 32-bit mode. Having the reserved range take away 256 MB makes it difficult for some applications to allocate the memory space they require on 32-bit systems. This command, the SGI_UNSUPPORTED_MAP_RESERVED_RANGE syssgi(2) option, the MAP_SGI_ANYADDR flag to mmap(2), and the SHM_SGI_ANYADDR flag to shmat(2) together allow the application to control when the reserved range is used so applications which so choose may disable it. For compatibility, the reserved range is normally enabled. The reserved range is in effect for 64-bit applications as well, but since the virtual address space is so large for these it is rarely an issue. In general, 64-bit applications do not need to be concerned with these new flags and options to control the reserved range. FILES /usr/lib/locale/locale/LC_MESSAGES/uxue language-specific message file [See LANG on environ(5).] SEE ALSO mmap(2), shmat(2). syssgi(2). WARNINGS Some existing applications are dependent on the reserved range being honored by the kernel. Using this command to disable the reserved range for a command that requires it may cause it to fail, dump core, or otherwise execute incorrectly. This applies to any other programs the command may run via fork/exec since the option is inherited. Therefore, this command and the syssgi(2) option must be used with extreme care. It should only be used with programs the user is certain are not dependent on the reserved range. The effect this command may have on applications that are in some way dependent on the reserved range is strictly unsupported by SGI.