Legacy Documentclose button

Important: The information in this document is obsolete and should not be used for new development.

Previous Book Contents Book Index Next

Inside Macintosh: Memory /
Chapter 3 - Virtual Memory Manager / Virtual Memory Manager Reference
Routines / Virtual Memory Management


LockMemoryContiguous

The LockMemoryContiguous function is exactly like the LockMemory function,
except that it attempts to obtain a contiguous block of physical memory associated
with the specified logical address range.

FUNCTION LockMemoryContiguous (address: UNIV Ptr; count: LongInt):
                              OSErr;
address
The starting address of the range of memory to be locked in RAM.
count
The size, in bytes, of the range of memory to be locked in RAM.
DESCRIPTION
The LockMemoryContiguous function makes the portion of the address space beginning at address and having a size of count bytes immovable in physical memory and ineligible for paging. The function attempts to obtain a contiguous block of physical memory associated with the specified logical address range. It might not be possible to make a range physically contiguous if any of the pages contained in the range are already locked.

If the address parameter supplied to the LockMemoryContiguous function is not on a page boundary, it is rounded down to the nearest page boundary. Similarly, if the specified range does not end on a page boundary, the count parameter is rounded up so that the entire range of memory is locked.

The CPU marks locked pages as noncacheable. On Macintosh computers containing the Macintosh IIci ROM, all physical RAM is marked noncacheable.

SPECIAL CONSIDERATIONS
Because a call to LockMemoryContiguous is not guaranteed to succeed,
all code that uses LockMemoryContiguous must have an alternate method
for locking the necessary ranges of memory. In general, you should avoid using LockMemoryContiguous if at all possible. If you must call it, do so as early as possible--preferably at system startup time--to increase the likelihood that enough contiguous memory can be found.

ASSEMBLY-LANGUAGE INFORMATION
The trap macro and routine selector for the LockMemoryContiguous function are
Trap macro Selector
_MemoryDispatch$0004

The registers on entry and exit for this routine are
Registers on entry
D0Selector code
A0Starting address
A1Number of bytes to unlock
Registers on exit
D0Result code

RESULT CODES
noErr0No error
paramErr-50Error in parameter list
notEnoughMemoryErr-620Insufficient physical memory
cannotMakeContiguousErr-622Cannot make specified range contiguous
interruptsMaskedErr-624Called with interrupts masked

Previous Book Contents Book Index Next

© Apple Computer, Inc.
3 JUL 1996